home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d12
/
bossa.arc
/
BOSS_DOC.ARC
/
BOSS.MAN
next >
Wrap
Text File
|
1990-03-12
|
248KB
|
8,291 lines
The Window BOSS
&
Data Clerk
Revision 02.15.90
Star Guidance Consulting, Inc.
273 Windy Drive
Waterbury, Connecticut 06705
(203) 574-2449
_______
____|__ | (tm)
--| | |-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
-----| | |---------------------
|___|___| MEMBER
Copyright (c) 1984-1990 by Philip A. Mongelluzzo
All Rights Reserved.
The Window BOSS Shareware diskette, containing a copy of this
manual may be freely copied and shared, but printed copies of
this document may not be copied in any way without permission in
writing from Star Guidance Consulting. Thank you.
The Window BOSS
1. Introduction
The Window BOSS is one of the most powerful and cost-effective
products available to enhance and accelerate the development of
system and applications programs in the "C" language. The BOSS
will let you create programs that have the same look and feel as
top sellers like Lotus 1-2-3, Sidekick, dBASE III, and Framework!
Pop-up windows, pull down menus, status lines, and in context on-
line help functions can be easily implemented. Your applications
can drag windows around the screen and automatically sense the
video card installed. All of this without snow, flicker, or
delay!
The BOSS's assistant, The Data Clerk is always on call to handle
the tasks associated with data entry. Whether they be as simple
as fetching a line of text or as complicated as the coordination
of filling out a form, the Data Clerk will be there to assist,
and if necessary, validate precious information as it is entered.
Registered users can take advantage of our "Source Plus" policy
that provides meticulously commented source code, technical
support, and minimal fee updates.
2. Technical Nitty Gritties
The Window BOSS supports PC/MSDOS for the IBM PC/XT/AT, PS/2 and
compatiables. However, you'll need one of the following
compilers in order to take advantage of the state-of-the-art
techniques available from the BOSS:
Lattice C, Microsoft C
Microsoft Quick C, Borland Turbo C
Computer Innovations CI86, Datalight
Watcom & Watcom Express C, Zortech
Aztec C, Mix Power C
The BOSS is written in "C" and assembly language. You'll need
the Microsoft Assembler, MASM, to assemble any local changes to
the assembler source.
Stats:
Maximum windows: limited only by compiler and memory
Maximum window: full screen (25x80, 43x80, 50x80)
Minimum window: 1 row 1 column (borderless)
3 rows 3 columns (framed)
Minimum fields: none
Maximum fields: limited only by compiler and memory
Operation:
Simply include the library at link time and invoke the
function desired.
Page: 1
The Window BOSS
3. User Supported Software
Star Guidance Consulting distributes The Window BOSS with a
unique marketing approach called Shareware. The Shareware
diskette with the programs and manual may be freely copied and
shared. It is also available from Star Guidance for $20.00. We
ask you to help us distribute The Window BOSS by sharing
unmodified copies of the Shareware diskette with others. We also
encourage you to register your copy for $55.00. You'll find a
registration form at the end of this manual. Thank you for your
support and enjoy the BOSS.
3.1. Registering
Shareware is a term for software that can be freely copied and
shared. The term describes copyrighted software which the author
supports and encourages people to copy and share.
Shareware is like public television: the programming is freely
distributed, but support from users is encouraged. The concept
is based on these principles:
1. People need to try programs to see if they are useful.
2. Software authors can be supported directly by users.
3. Copying and networking of programs can be encouraged.
We encourage you to register your copy of The Window BOSS for
$55.00. Registration has a number of benefits to you:
1. Serialized diskette containing all source code for all
supported compilers.
2. Telephone Support and minimal fee updates.
Minimial fees cover the cost of media, shipping, handling,
and update preparation.
3. Thanks from us for your support and encouragement!
3.2. Support Services
You may call or write for support services. Unless the problem is
relatively complex, you will get the best results by calling. If
you write, please include a phone number and the times when you
will be available. Our response to written questions is much
slower, but we do give priority to overseas users. We are
available between 9AM and 5PM Monday through Friday, and
sometimes on Saturday and Sunday.
Page: 2
The Window BOSS
Support Services - continued.
With reference to calls, if we do not call back, please remember
that about 15% of our call backs do not get completed because of
faulty phone numbers, unanswered, or busy phones. If we have not
called back within 1 work day, call us again. Frequent,
difficult to reach, or foreign callers can expect "person to
person" collect return calls.
3.2.1. Electronic Support
Electronic support is provided on both GENIE and CompuServe.
Support previously provided by our BBS is now provided on these
services. You are strongly advised to obtain a USER ID on at
least one of these fine services as no other form of electronic
support can be provided.
On GENIE, a special topic on the IBM PC Round Table Bulletin
Board has been set up to provide support to Window BOSS users.
The Window BOSS topic can be found in the "On-Line Product
Support" category of the Bulletin Board. As of this writing,
The IBM PC Round Table main menu is page 615 and the "On-Line
Product Support" category is category # 9 of the Round Table's
Bulletin Board. Simply move to page 615 by typing "M 615",
select the IBM PC Round Table Bulletin Board from the menu by
typing "1", then SET the category by typing "SET 9". Reading and
entering messages is straight forward. The on-line help system
and GENIE's user guide should assist you if you have questions.
If you prefer, you can leave mail addressed to MONGELLUZZO.
Round Table and Mail messages are answered on a daily basis. If
you need information on obtaining a GENIE account you can call
GENIE toll free at 1-800-638-9636.
CompuServe electronic correspondence is limited to EMAIL. Our
EMAIL ID is [71565,1001]. SIG(s) are also ocassionaly checked
for messages but should not be considered a vehicle for effective
communication to Star Guidance. If you are a CompuServe user and
you need to reach us, use EMAIL. EMAIL messages are answerd on a
daily basis. If you need information on obtaining a CompuServe
account you can call CompuServe toll free at 1-800-848-8199.
Page: 3
The Window BOSS
4. The Basics
The Window BOSS is an extensive library of C functions for the
creation, the management and the manipulation of text windows.
We take care of all the housekeeping and let you, the programmer,
get on with developing your application with a minimum of fuss.
Both The Window BOSS and The Data Clerk are based on a layered
software design in which powerful, easy to use functions are
created from a series of lower level primitives. As a
programmer, you will quickly appreciate our clean and uncluttered
approach to getting the job done.
Windows are created and defined by opening them. Once created,
you can write to them, move them around, change their attributes,
use them as the basis for data entry, or "kill" them by closing
them. Windows are nothing more than a sub display of a larger
display - the physical screen. They are defined to have size,
location, and attributes like foreground color, background color,
border colors and so on. The BOSS includes a whole host of
functions for defining and manipulating your windows.
Windows can also serve as the backdrop for data entry. Once a
window is created, you can use it to convey information or to
retrieve it! The Data Clerk will assist you in obtaining the
desired goal, whether it be as simple as a single line of text or
as complex as a complete form.
Forms are an ordered collection of input requests (fields) that
occur within a specific window. Fields have size, location
(relative to the window which they will be displayed in), and
attributes (foreground color, background color, mask values, fill
characters, type [integer, float, long, text], validation
ranges) and so on. Like windows, forms are created by opening
them. Their contents must then be defined by using the field
definition functions provided, or with your own custom field
definition functions. Once created and defined, a form becomes
part of the window and moves with it. Forms are "killed" by
closing them (n.b. killing a form has no effect on the window to
which it was anchored or to the information displayed in it, form
or otherwise). The same functions used to input single data items
are used to build forms. This consistency, coupled with an
uncluttered approach and flexibility, gives The Window BOSS its
power.
Page: 4
The Window BOSS
4.1. Window Basics
Here is the famous "hello" program! As you can see it's pretty
simple to get windows into your applications with The Window
BOSS!! You should review this code in conjunction with the
function descriptions found in this manual and the concepts
outlined in the Important Concepts section following the
examples.
#include "windows.h" /* REQUIRED */
main()
{
WINDOWPTR w1; /* window handle */
int batrib; /* border atrib */
int watrib; /* window atrib */
/*
* Set attributes:
*
* border - blue/white box
* window - white background/black letters
*
*/
batrib = (BLUE << 4) | WHITE; /* border atrib */
watrib = (WHITE <<4) | BLACK; /* window atrib */
/*
* Open window at 0,0 - 25 cells wide and 10 cells high
*/
w1 = wn_open(0,0,0,25,10,watrib,batrib);
if(!w1) exit();
/*
* Print the famous string and wait for key to be struck.
* Close window on key strike.. exit.
*/
wn_printf(w1,"Hello World...");
v_getch(); /* wait for key */
wn_close(w1); /* close the window */
exit(0); /* and exit */
}
/* End */
Page: 5
The Window BOSS
4.2. Data Entry Basics
Lets expand our "hello" program to prompt and fetch a name.
#include "windows.h" /* REQUIRED */
main()
{
WINDOWPTR w1; /* window handle */
int batrib; /* border atrib */
int watrib; /* window atrib */
char name[15]; /* name */
/*
* Set attributes:
*
* border - blue/white box
* window - white background/black letters
*
*/
batrib = (BLUE << 4) | WHITE; /* border atrib */
watrib = (WHITE <<4) | BLACK; /* window atrib */
/*
* Open window at 0,0 - 25 cells wide and 10 cells high
*/
w1 = wn_open(0,0,0,25,10,watrib,batrib);
if(!w1) exit();
/*
* Print the famous string, prompt and fetch a name,
* wait for key to be struck.
* Close window on key strike.. exit.
*/
wn_printf(w1,"Hello World...");
*name = NUL; /* init buffer for name */
wn_gtext(XEQ,NFRM,NFLD,w1,2,1,"Name: ",watrib,'_',15,name,NSTR,NSTR);
v_getch(); /* wait for key */
wn_close(w1); /* close the window */
exit(0); /* and exit */
}
/* End */
Page: 6
The Window BOSS
4.3. Form Basics
Now we will expand a bit further to read a 2 field form.
#include "windows.h" /* REQUIRED */
main()
{
WINDOWPTR w1; /* window handle */
WIFORM f1; /* form handle */
int batrib; /* border atrib */
int watrib; /* window atrib */
char name[15]; /* name */
char city[15]; /* city */
/*
* Set attributes:
*
* border - blue/white box
* window - white background/black letters
*
*/
batrib = (BLUE << 4) | WHITE; /* border atrib */
watrib = (WHITE <<4) | BLACK; /* window atrib */
/*
* Open window at 0,0 - 25 cells wide and 10 cells high
*/
w1 = wn_open(0,0,0,25,10,watrib,batrib);
if(!w1) exit();
/*
* Print the famous string, create, define, and fetch form
* wait for key to be struck.
* Close window on key strike.. exit.
*/
wn_printf(w1,"Hello World...");
*name = NUL; /* init buffer for name */
*city = NUL; /* init buffer for city */
f1 = wn_frmopn(3); /* open form 2 + 1 Fields */
wn_gtext(SET,f1,0,w1,2,1,"Name: ",watrib,'_',15,name,NSTR,NSTR);
wn_gtext(SET,f1,1,w1,3,1,"City: ",watrib,'_',15,city,NSTR,NSTR);
wn_frmget(f1); /* read the form */
v_getch(); /* wait for key */
wn_frmcls(f1); /* first close the form */
wn_close(w1); /* then close the window */
exit(0); /* and exit */
}
Page: 7
The Window BOSS
4.4. Mouse Basics
The Window BOSS includes a collection of routines that provide
the building blocks for developing applications that incorporate
Mouse support. As a programmer you will need three things:
. The mouse and its associated hardware
. The mouse driver software
. C and/or Assembly level functions to communicate with the
mouse
The first two (of the above) are provided by the mouse
manufacturer and must be installed as outlined in the
manufacture's literature. The last item is provided as part of
The Window BOSS. The Window BOSS's mouse functions adhere to the
de facto Microsoft standard. However, all of the routines have
been extensively tested with both Microsoft and Logitech mice.
Mouse Communication
The only practical method of communicating with the mouse is
through the mouse device driver, which is accessible via software
interrupt 33H. This interrupt is not used by DOS and is claimed
by the mouse device driver at its invocation. Information is
exchanged between the mouse device driver and calling software
via the standard 8086/88 registers. As a Window BOSS user you
will be pleased to know that the burden of having to deal with
the mouse at this level has be replaced by a collection of "C"
level routines that handle all of the aforementioned setup,
software interrupts and register loading/unloading!!
Mouse Usage
Once the mouse has been initialized (reset), you can show it,
hide it, move it, ask it where it is, check to see if its buttons
have been pressed or released, make it emulate a light pen, put a
cage around it (set its region), define its shape and associated
attribute, or ask it how many buttons it has!
Mouse Functions
The standard Microsoft mouse supports 16 functions. Logitech's
are the same, although some are tweaked a tad to handle the 3rd
button. The Window BOSS provides an easy to use interface to the
low level mouse functions and several higher level functions to
ease your applications level programming.
Page: 8
The Window BOSS
Mouse Basics - continued.
Mouse Functions - continued.
The following table summarizes the 16 Microsoft Mouse Functions:
Function Description Window BOSS Function
0 Initialize mouse mo_reset()
1 Show mouse mo_show()
2 Hide mouse cursor mo_hide()
3 Get position & status mo_pos()
4 Set mouse position mo_move()
5 Get button press info mo_pbinfo()
6 Get button release info mo_rbinfo()
7 Set min/max columns mo_clim()
8 Set min/max rows mo_rlim()
9 * Define graphics pointer mo_sgcursor()
10 Define text pointer mo_scursor()
11 Read motion counters mo_motion()
12 * Define event handler mo_task()
13 Light pen emulation on mo_lpon()
14 Light pen emulation off mo_lpoff()
15 * Set motion pixel ratio mo_ratio()
In addition to the above low level interface routines, the
following application's level functions have been implemented to
ease the mouse's natural display adapter sensitivity. Without
these routines, mouse applications would have to deal with the
mouse in a 640x200-pixel plane - even in text mode!
mo_rcpos() Return current mouse position (row, col)
mo_locate() Locate mouse (row, col)
mo_press() Get button pressed info (button, location..)
mo_release() Get button released info ( " " " " " " " " )
mo_region() Set mouse hot area (row, col, width, height)
mo_setptr() Set mouse pointer (style, attributes)
mo_wait() Wait for mouse to settle (de bouncing logic)
mo_nbut() Return # of buttons on mouse
Most mouse applications will use and generally only need to use:
mo_reset(), mo_show(), mo_hide(), and most or all of the
application level functions.
The low level functions are provided for those who prefer to deal
with the mouse on its 640 x 200 pixel plane.
All of the above supported functions are documented in the
FUNCTION CALL SYNOPSIS section of this manual.
* Interfaces to these functions are provided but are not supported
by Star Guidance.
Page: 9
The Window BOSS
Mouse Basics - continued.
Mouse Programming Example (Basic)
#include "windows.h" /* ALWAYS */
main()
{
MOUSEPTR m1; /* my mouse ptr */
int mstat, mclik, mrow, mcol; /* mouse stuff */
int i; /* scratch */
v_cls(NORMAL); /* clear the screen */
v_locate(0,0,0); /* locate the cursor */
m1 = mo_reset(); /* init mouse */
if(m1) { /* mouse exists */
printf("Mouse exists with %d buttons.\n", mo_nbutt(m1));
mo_setptr(m1, 0x1E, NORMAL); /* set mouse pointer style */
mo_reigon(m1, 0, 0, 80, 25); /* set mouse "window" */
mo_show(m1); /* show the critter */
v_locate(0,5,0);
printf("Roll test... move mouse, click left or right to end.\n");
do { /* rolling test */
mo_rcpos(m1, &mstat, &mrow, &mcol);
v_locate(0,6,0);
printf("Mouse @ %03d,%03d", mrow, mcol);
} while (!mstat);
v_cls(NORMAL); /* clear screen */
v_locate(0,0,0); /* home cursor */
mo_hide(m1); /* hide mouse */
m1 = mo_reset(); /* reset mouse */
exit(0); /* finito */
}
else {
printf("NO MICE HERE!!\n"); /* tell of woe... */
exit(0); /* exit */
}
}
/* End */
Page: 10
The Window BOSS
4.5. Important Concepts
The preceding programming examples serve as the foundation for
some fundamental, but very important concepts.
4.5.1. WINDOWS.H
The Window BOSS requires the file "windows.h" to be included in
any source code files that are going to reference any of the
windowing, data entry, or form control functions. Take the time
to peruse this file as it contains all of the constants and
structures used by both The Window BOSS and Data Clerk.
Also, please note that WINDOWS.H includes other standard compiler
header files.
4.5.2. Window Handles
All windowing functions (any function beginning with "wn_")
either explicitly require an associated window pointer to work,
or assume one already is, or will be, created.
4.5.3. Mouse Handles
All mouse functions (any function beginning with "mo_")
either explicitly require an associated mouse pointer to work,
or assume one already is, or will be, created.
4.5.4. Window Origin
Windows have an origin relative to the upper left hand corner of
the screen which is row 0, and column 0.
4.5.5. Text and Data Field Origins
Text and data fields have an origin relative to the upper left
hand corner of the window, which is always row 0, column 0.
4.5.6. Attributes
Attributes (foreground/background colors) must be specified for
windows, borders, and data entry fields. Prompts for data entry
fields always have the same attributes as the window. The fields
themselves can have, but do not require, a different attribute
set.
Page: 11
The Window BOSS
4.5.7. Fields and Forms
Fields are defined by calling the field definition functions
(wn_gdate, wn_gtime, wn_gphone, ...) with "SET" as the function
code (1st arg), a valid form handle (2nd arg), a field sequence
number (3rd arg), and the window handle (4th arg) belonging to
the window in which the form is to be displayed. The same
functions that are used to retrieve discrete information can be
combined to create a form when used in conjunction with
wn_frmopn() and wn_frmget(). Note the use of XEQ vs. SET, NFRM
vs. f1, and NFLD in the preceding two program examples. XEQ
stands for "execute now", while SET stands for "set up for later
execution under wn_frmget()".
Forms are anchored to a particular window and must be created by
wn_frmopn() and defined with field definition functions.
Data entry fields can be edited, pre-filled, have validation
ranges, and have both help and error messages associated with
them.
4.5.8. Return Values
Some functions return an indication of success or failure which
you can foolishly ignore, or check to determine what action to
take.
4.5.9. Closing Forms and Windows
Both forms and windows should be closed when they are no longer
needed. Although you can close them in any order, it makes sense
to close all forms associated with a window before closing the
window itself. As a side note - attempting to reference either
forms or windows which have been closed can lead to unpredictable
results.
Page: 12
The Window BOSS
Important Concepts - continued.
4.5.10. Overlapping Windows
The Window BOSS fully supports the concept of overlapping
windows, that is to say that you can have several windows on the
screen at the same time and freely access any one of them without
having to be concerned with the order in which they were opened
or whether or not any other windows overlap the one you wish to
access. The Window BOSS employs the "most recently used is
active" concept. This concept is based on the following:
. The last window referenced is the current active
window.
. The current active window is always the top window.
For example, let us assume that you have opened three overlapping
windows in the following order; w1, w2, w3. w3 is considered to
be the top window because it was the last window referenced. If
you now reference, or explicitly activate w2, The Window BOSS
will automatically adjust the screen image to insure that w2 is
now the top window with w3 and w1 being partially hidden by w2.
Before After
+----------+ +----------+
| W1 | | W1 |
| +----------+ | +----------+
| | W2 | | | W2 |
| | +------------+ | | |----+
| | | W3 | | | | W3 |
| | | | | | | |
| | +------------+ | | |----+
| | | | | |
| +----------+ | +----------+
| | | |
+----------+ +----------+
It is extremely important to keep in mind that The Window BOSS
will automatically activate (bring to the top) the window being
referenced. By keeping your screen layouts attractive and
uncluttered there will be a minimum of window thrashing which is
both annoying and time consuming.
Page: 13
The Window BOSS
Important Concepts - continued.
4.5.11. Functions
The Window BOSS's functions fall into four major groups: those
that manipulate windows, those that deal with data entry, those
that deal with the mouse, and those that deal with the video or
keyboard interface at a relatively low level. All window and
data manipulation functions begin with the prefix "wn_" as in
"wn_open". All mouse functions begin with "mo_" as in
"mo_reset", while all video and keyboard based functions begin
with "v_" or "_" as in "v_getch" and "_putch". This convention
makes it easy to remember where to look when you want to do
something. Additionally, there are several global functions
which begin with "wns_". These functions, although visible to
the outside world, are used internally by The Window BOSS.
So ends the tale of the basics, you are now ready to add sizzle,
bright lights, and artistic touches to all your applications!
Page: 14
The Window BOSS
5. Distribution Methods & Media Kits
The Window BOSS is distributed on 5 1/4" DSDD diskettes. There
are two media kits available: The Shareware diskette kit and The
Source diskette kit. This doucument describes both media kits.
Neither media kit contains ALL of the files listed.
The Shareware diskettes can be freely copied and shared. The
Source diskettes can not. In either case you receive a bundled
product -- that is to say, we do not require you to order a
separate media kit for Microsoft, another for Borland, and so on.
All our products include support for all the compilers we
support. This makes moving from one compiler to another child's
play, and it also helps to protect your software development
investment, while at the same time saving you a significant sum
of money!
5.1. CompuServe, GENIE & Bulletin Board Files
We always upload the latest release of shareware files to GENIE,
CompuServe, and selected BBS(s) around the country. These files
can be found in the Vendor Support Software Library on the IBM
Round Table (M 616) of GENIE and in the "C" Language Section on
the IBM Programming Sig (GO IBMPRO) of CompuServe. In both cases
we try to name the required files as BOSS01.LZH (code++),
BOSS2A.LZH & BOSS2B.LZH (libs), BOSS03.LZH (documentation).
Naturally, this naming convention is subject to the approval of
the respective service provider. However, it is reasonable to
assume that the required files will always conform to a naming
convention that begins with "BOSS" or "BOS" and have the keyword
"windows" associated with them.
If you can not find The Window BOSS files on either GENIE or
CompuServe it may be due to a restructuring of the SIGs by the
respective service provider. Try looking in the vendor support,
systems, or language areas of the SIGS.
Bulletin Board files follow the same naming conventions as GENIE
and CompuServe files.
5.2. The SHAREWARE Distribution Diskette(s)
The SHAREWARE diskette(s) contain the following files:
Disk 1
LHARC.DOC <- Archive utility document
LHARC.EXE <- Archive utility
BOSS_DOC.LZH <- Documentation archive
BOSS_SUP.LZH <- Support archive (code, etc.)
BOSS_LB1.LZH <- Library archive (Microsoft)
READ.ME <- Important notes
Page: 15
The Window BOSS
The Shareware Distribution Diskette - continued.
Disk 2
BOSS_LB2.LZH <- Library archive (Watcom, Zortech)
BOSS_LB3.LZH <- Library archive (Mix, Aztec, C86)
BOSS_LB4.LZH <- Library archive (Datalight, Lattice,
Borland Turbo C)
Contents of BOSS_DOC
BOSS.MAN <- This manual
BOSS.TOC <- Table of Contents
Contents of BOSS_SUP
AZCS.BAT <- Compiler Driver - Aztec
C86.BAT <- Compiler Driver - CI86
DLCS.BAT <- Compiler Driver - Datalight
LCS3.BAT <- Compiler Driver - Lattice 3.4
LCS6.BAT <- Compiler Driver - Lattice 6.0
MSC5.BAT <- Compiler Driver - Microsoft C
MSQC.BAT <- Compiler Driver - Quick C
PCCM.BAT <- Compiler Driver - Mix Power C
TCS.BAT <- Compiler Driver - Turbo C
WECS.BAT <- Compiler Driver - EXPRESS C
WOCS.BAT <- Compiler Driver - Watcom C
ZTCS.BAT <- Compiler Driver - Zortech C
LOADAZ.BAT <- Link Batch file - Aztec
LOADC86.BAT <- Link Batch file - CI86
LOADDLC.BAT <- Link Batch file - Datalight
LOADLC3.BAT <- Link Batch file - Lattice 3.4
LOADLC6.BAT <- Link Batch file - Lattice 6.0
LOADMS5.BAT <- Link Batch file - Microsoft C
LOADMSQC.BAT <- Link Batch file - Quick C
LOADPC.BAT <- Link Batch file - Mix Power C
LOADTC.BAT <- Link Batch file - Turbo C
LOADWAT.BAT <- Link Batch file - Watcom C
LOADWEC.BAT <- Link Batch file - EXPRESS C
LOADZTC.BAT <- Link Batch file - Zortech C
BOSSDEMO.C <- Source to BOSSDEMO
BOSSDEMO.EXE <- DEMO Program
BOSSDEMO.MAK <- MAKE file for QuickC
BOSSDEMO.PRJ <- PROJECT file for Turbo C
GENINDEX.C <- Source to GENINDEX
HELLO.C <- The Classic...
HELP.C <- Help system source
INTELC.HLP <- Demo DATA file
INTELC.NDX <- Index for Demo DATA file
POPUP.C <- Popup menu source
REV.HST <- Revision History
REV.LEV <- Revision Level
SAMPLE.C <- Data entry sample program
Page: 16
The Window BOSS
The Shareware Distribution Diskette - continued.
Contents of BOSS_SUP - continued.
WINDOWS.FN5 <- Type Checking INCLUDE file
WINDOWS.FNZ <- Type Checking INCLUDE file
WINDOWS.H <- BOSS INCLUDE file
WN_FRMGE.C <- Data Entry form reader
WN_GDATE.C <- Data Entry function (dates)
WN_GFLOA.C <- Data Entry function (floats)
WN_GPHON.C <- Data Entry function (phone)
WN_GTIME.C <- Data Entry function (time)
WN_IEMSG.C <- Data Entry error message handler
WN_IHMSG.C <- Data Entry help message hander
WN_PUTS.C <- Source to wn_puts()
Contents of BOSS_LB1
SMSC5.LIB <- BOSS library - Microsoft C
SMSQC.LIB <- BOSS library - Quick C (QCL)
Contents of BOSS_LB2
WATEC.LIB <- BOSS library - EXPRESS C
WATOC.LIB <- BOSS library - Watcom C
ZTECH.LIB <- BOSS library - Zortech C
Contents of BOSS_LB3
MWIN.MIX <- BOSS library - Mix Power C
SAZTEC.LIB <- BOSS library - Aztec C
SC86.LIB <- BOSS library - CI86
Contents of BOSS_LB4
SDLC.LIB <- BOSS library - Datalight
SLAT3.LIB <- BOSS library - Lattice C 3.4
SLAT6.LIB <- BOSS library - Lattice C 6.0
STC.LIB <- BOSS library - Turbo C
Page: 17
The Window BOSS
5.3. The SOURCE Distribution Diskette(s)
The SOURCE diskette(s) contain the following files:
DEMO / DOC Disk
LHARC.DOC <- Documentation for ARC.EXE
LHARC.EXE <- Archive utility
DOC.LZH <- Manual
DEMO.LZH <- DEMO program & data files
READ.ME <- Important notes
REVHST.LZH <- Revision History
REV.LEV <- Revision Level
DISKS.LST <- List of files on source disks
Disk 1
CFILES.LZH <- Source to all "C" modules
WATCOM.LZH <- Watcom Specific files
DLC.LZH <- Datalight Specific files
Disk 2
MS5.LZH <- Microsoft C Specific files
MSQC.LZH <- Microsoft Quick C Specific files
TC2.LZH <- Turbo C Specific files
MIX.LZH <- Mix Power C Specific files
ZTC.LZH <- Zortech C Specific files
Disk 3
ASMFILES.LZH <- Source to all "Assembler" modules
LC3.LZH <- Lattice 3.4 Specific files
LC6.LZH <- Lattice 6.0 Specific files
C86.LZH <- CI86 Specific files
AZTEC.LZH <- Aztec Specific files
Page: 18
The Window BOSS
The SOURCE Distribution Diskette(s) - continued
Contents of ASMFILES.LZH (ASM Source Files)
AZVLIB.ASM <- ASM routines for Aztec
DLVLIB.ASM <- ASM routines for Datalight
MSVLIB.ASM <- ASM routines for MSC, Borland, Watcom
VLIB.ASM <- ASM routines for Lattice & CI86
PCVLIB.ASM <- ASM routines for Mix Power C
Microsoft MASM format
WCVLIB.ASM <- ASM routines for WATCOM C
!VLIBC.ASM <- ASM routines not found in VLIB.C
Contents of AZTEC.LZH
ACOMPACT.BAT <- Compact model assembler driver
ALARGE.BAT <- Large model assembler driver
AMEDIUM.BAT <- Medium model assembler driver
ASMALL.BAT <- Small model assembler driver
CCC.BAT <- Compact model compiler driver
CCL.BAT <- Large model compiler driver
CCM.BAT <- Medium model compiler driver
CCS.BAT <- Small model compiler driver
CCOMPILE.BAT <- Compact model - compile *.c
LCOMPILE.BAT <- Large model - compile *.c
MCOMPILE.BAT <- Medium model - compile *.c
SCOMPILE.BAT <- Small model - compile *.c
LOADAZ.BAT <- Link driver for BOSSDEMO
MAKELIB.BAT <- Build LIB from O(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
SWIN.LIB <- Small model library
LWIN.LIB <- Large model library
WINDOWS.FNS <- Type checking header file
Contents of C86.LZH (Computer Innovations Specific Files)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
CC.BAT <- Small model compiler driver
CCBIG.BAT <- Large model compiler driver
EPILOGUE.H <- ASM include file
LCOMPILE.BAT <- Large model - compile *.c
LOADC86.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
MAKELIB.BAT <- Builds LIB file from OBJ(s)
MODEL.H <- ASM include file
PROLOGUE.H <- ASM include file
SCOMPILE.BAT <- Small model - compile *.c
SWIN.LIB <- Small model library
Page: 19
The Window BOSS
The SOURCE Distribution Diskette - continued.
Contents of CFILES.LZH (C Source Files)
BOSSDEMO.C <- BOSSDEMO Source
DOSINT.C <- AZTEC compatibility module.
GENINDEX.C <- GENINDEX Source
HELP.C <- Help function source
HELLO.C <- The classic...
POPUP.C <- Popup menu source
SCANCODE.C <- Quickie to display KB scancodes
SAMPLE.C <- Data entry sample program
VLIB.C <- C level versions of most ASM funs.
WINDOWS.C <- Globals
WINDOWS.H <- Window BOSS header file
WN_ACTIV.C <- Window activation, memory mgmt ++
WN_BOXSE.C <- Set box drawing character set
WN_CLOSE.C <- Window Close
WN_CLR.C <- Clear window
WN_COLOR.C <- Set window colors
WN_DBORD.C <- Draw window borders
WN_DELRO.C <- Delete row in window
WN_DMA.C <- Set video access mode
WN_SCROL.C <- Set window scrolling method
WN_INIT.C <- Initialize window system
WN_DMODE.C <- Set window display mode
WN_FIXCS.C <- Fix physical cursor location
WN_GETS.C <- Get string with validation
WN_INSRO.C <- Insert row in window
WN_LOCAT.C <- Locate cursor in window
WN_MOVE.C <- Move window
WN_MOUSE.C <- Mouse interface routines
WN_NATRI.C <- Set new attributes NOW
WN_OPEN.C <- Window open
WN_PRINT.C <- Window printf
WN_PUTS.C <- Put string in window
WN_RESTO.C <- Restore window image
WN_SAVE.C <- Save window image
WN_STRING.C <- String (char) functions
WN_SUP.C <- Internal support functions
WN_SYNC.C <- Set/Clear cursor sync
WN_TITLE.C <- Title window
WN_WRAP.C <- Set/Clear text wrap
WPRINTF.C <- Alternate window printf
WINDOWS.FN5 <- Prototype header
WINDOWS.FNZ <- Prototype header
Page: 20
The Window BOSS
The SOURCE Distribution Diskette - continued.
Contents of CFILES.LZH (C Source Files - continued.)
WN_GDATE.C <- Data entry - get date
WN_GDOUBLE.C <- Data entry - get double
WN_GTIME.C <- Data entry - get time
WN_GTEXT.C <- Data entry - get text
WN_GPHONE.C <- Data entry - get phone #
WN_GPWORD.C <- Data entry - get password
WN_GINT.C <- Data entry - get integer
WN_GUINT.C <- Data entry - get unsigned integer
WN_GULONG.C <- Data entry - get unsigned long
WN_GLONG.C <- Data entry - get long
WN_GFLOAT.C <- Data entry - get float
WN_GBOOL.C <- Data entry - get logical
WN_DTEXT.C <- Data entry - display text
WN_FRMOPN.C <- Data entry - FORM open
WN_FRMGET.C <- Data entry - FORM read
WN_FRMCLS.C <- Data entry - FORM close
WN_INPUT.C <- Data entry - common input
WN_IEMSG.C <- Data entry - error msg handler
WN_IHMSG.C <- Data entry - help msg handler
Page: 21
The Window BOSS
The SOURCE Distribution Diskette - continued.
Contents of MIX.LZH (Mix Power C Specific Files)
** Note: Mix Power C only supports the Medium Memory Model **
AMEDIUM.BAT <- Medium model assembler driver
MCOMPILE.BAT <- Medium model - compile *.c
LOADPC.BAT <- Link driver for BOSSDEMO
MWIN.MIX <- Medium model library
MAKELIB.BAT <- Builds MWIN.MIX
MAKELIB.CMD <- Data file for MAKELIB.BAT
PCCM.BAT <- Medium model compiler driver
WINDOWS.FNS <- Type checking header
Contents of LC3.LZH & LC6.LZH (Lattice C Specific Files)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
ADMODEL.BAT <- D model assembler driver
APMODEL.BAT <- P model assembler driver
LCOMPILE.BAT <- Large model - compile *.c
SCOMPILE.BAT <- Small model - compile *.c
PCOMPILE.BAT <- P model - compile *.c
DCOMPILE.BAT <- D model - compile *.c
LCS.BAT <- Small model compiler driver
LCL.BAT <- Large model compiler driver
LCP.BAT <- P model compiler driver
LCD.BAT <- D model compiler driver
LOADLC.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
SWIN.LIB <- Small model library
MAKELIB.BAT <- Build LIB file from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
WINDOWS.FNS <- Type checking header
Page: 22
The Window BOSS
The SOURCE Distribution Diskette - continued.
Contents of DLC.LZH (Datalight Specific)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
ADMODEL.BAT <- D model assembler driver
APMODEL.BAT <- P model assembler driver
CCS.BAT <- Small model compiler driver
CCL.BAT <- Large model compiler driver
CCD.BAT <- D model compiler driver
CCP.BAT <- P model compiler driver
LCOMPILE.BAT <- Large model - compile *.c
SCOMPILE.BAT <- Small model - compile *.c
DCOMPILE.BAT <- D model - compile *.c
PCOMPILE.BAT <- P model - compile *.c
LOADDLC.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
SWIN.LIB <- Small model library
MAKELIB.BAT <- Build LIB from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
WINDOWS.FNS <- Type checking header
Contents of TC2.LZH (Borland Turbo C Specific)
ALARGE.BAT <- Large model assembler driver
ASMALL.BAT <- Small model assembler driver
BOSSDEMO.PRJ <- TC Project file for BOSSDEMO
LCOMPILE.BAT <- TCC - Large model - compile *.c
SCOMPILE.BAT <- TCC - Small model - compile *.c
CCOMPILE.BAT <- TCC - Compact model - compile *.c
MCOMPILE.BAT <- TCC - Medium model - compile *.c
LOADTC.BAT <- Tlink driver for BOSSDEMO
LWIN.LIB <- Large model library
MAKELIB.BAT <- Build LIB from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
SWIN.LIB <- Small model library
TCCL.BAT <- Large model TCC compiler driver
TCCS.BAT <- Small model TCC compiler driver
TCCM.BAT <- Medium model TCC compiler driver
TCCC.BAT <- Compact model TCC compiler driver
WINDOWS.FNS <- Type checking header
Page: 23
The Window BOSS
The SOURCE Distribution Diskette - continued.
Contents of MS5.LZH (Microsoft C Specific Files)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
AMEDUIM.BAT <- Medium model assembler driver
ACOMPACT.BAT <- Compact model assembler driver
LCOMPILE.BAT <- Large model - compile *.c
SCOMPILE.BAT <- Small model - compile *.c
MCOMPILE.BAT <- Medium model - compile *.c
CCOMPILE.BAT <- Compact model - compile *.c
MCCL.BAT <- Large model compiler driver
MCCS.BAT <- Small model compiler driver
MCCM.BAT <- Medium model compiler driver
MCCC.BAT <- Compact model compiler driver
LOADMS.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
SWIN.LIB <- Small model library
MAKELIB.BAT <- Build LIB from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
WINDOWS.FNS <- Type checking header
Contents of MSQC.LZH (Microsoft QuickC Specific Files)
ASMALL.BAT <- Small model assembler driver
ALARGE.BAT <- Large model assembler driver
AMEDUIM.BAT <- Medium model assembler driver
ACOMPACT.BAT <- Compact model assembler driver
SCOMPILE.BAT <- Small model - compile *.c
LCOMPILE.BAT <- Large model - compile *.c
MCOMPILE.BAT <- Medium model - compile *.c
CCOMPILE.BAT <- Compact model - compile *.c
MCCL.BAT <- Large model compiler driver
MCCS.BAT <- Small model compiler driver
MCCM.BAT <- Medium model compiler driver
MCCC.BAT <- Compact model compiler driver
LOADMS.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Large model library
SWIN.LIB <- Small model library
MAKELIB.BAT <- Build LIB from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
BOSSDEMO.MAK <- MAKE file for BOSSDEMO
WINDOWS.FNS <- Type checking header
Page: 24
The Window BOSS
The SOURCE Distribution Diskette - continued.
Contents of WATCOM.LZH
ACOMPACT.BAT <- Compact model assembler driver
ALARGE.BAT <- Large model assembler driver
ASMALL.BAT <- Small model assembler driver
AMEDIUM.BAT <- Medium model assembler driver
WCCS.BAT <- Small model compiler driver
WCCL.BAT <- Large model compiler driver
WCCM.BAT <- Medium model compiler driver
WCCC.BAT <- Compact model compiler driver
XCC.BAT <- EXPRESS C compiler driver
CCOMPILE.BAT <- Compact model - compile *.c
LCOMPILE.BAT <- Large model - compile *.c
MCOMPILE.BAT <- Medium model - compile *.c
SCOMPILE.BAT <- Small model - compile *.c
LOADWAT.BAT <- Link driver for BOSSDEMO
LOADWEC.BAT <- Link driver for BOSSDEMO (EXPRESS C)
MAKELIB.BAT <- Build LIB from OBJ(s)
MAKELIB.CMD <- Data file for MAKELIB.BAT
SWIN.LIB <- Small model library
LWIN.LIB <- Large model library
XMWIN.LIB <- EXPRESS C library
WINDOWS.FNS <- Type checking header
Contents of ZTC.LZH (Zortech C Specific Files)
ACOMPACT.BAT <- Compact model assembler driver
ALARGE.BAT <- Large model assembler driver
ASMALL.BAT <- Small model assembler driver
AMEDIUM.BAT <- Medium model assembler driver
CCOMPILE.BAT <- Compact model - compile *.c
LCOMPILE.BAT <- Large model - compile *.c
LOADZTC.BAT <- Link driver for BOSSDEMO
LWIN.LIB <- Larger model library
MAKELIB.BAT <- Build LIB file from OBJ(s)
MAKELIB.CMD <- Data file for makelib.bat
MCOMPILE.BAT <- Medium model - compile *.c
SCOMPILE.BAT <- Small model - compile *.c
SWIN.LIB <- Small model library
WINDOWS.FNS <- Type checking header file
ZTCC.BAT <- Compact model compiler driver
ZTCCB.BAT <- Compact model big compiler driver
ZTCL.BAT <- Large model compiler driver
ZTCLB.BAT <- Large model big compiler driver
ZTCM.BAT <- Medium model compiler driver
ZTCMB.BAT <- Medium model big comiler driver
ZTCS.BAT <- Small model compiler driver
ZTCSB.BAT <- Small model big compiler driver
Page: 25
The Window BOSS
6. Installation, Compiling, Linking
6.1. Installation
By the numbers:
1) MAKE A BACKUP OF ALL DISKS !!!
2) Shareware diskettes - Use LHARC to unarchive the
various LZH files. You will need 900+k of free disk
space for all of the files! Alternatively you can
extract only those files you need for use with a
specific compiler. Simply use LHARC to extract all the
files from BOSS_SUP.LZH then the library(s) you will
from BOSS_LB?.LZH, for example:
B>A:LHARC E A:BOSS_SUP
B>A:LHARC E A:BOSS_LB1 SMSC5.LIB
** Shareware Users Note ** - The examples used in the
documentation assume the library's name to be
SWIN.LIB. You may want to rename the library you
extracted to conform to this naming convention to
eliminate any possible confusion.
Source Code diskettes - Use LHARC to unarchive
CFILES.LZH and ASMFILES.LZH. Then, depending upon the
compiler you intend to use, unarchive only ONE of the
following: LC3.LZH, LC6.LZH, MS5.LZH, MSQC.LZH,
DLC.LZH, C86.LZH, TC2.LZH, MIX.LZH, WATCOM.LZH,
ZTC.LZH, or AZTEC.LZH. If you plan on unarchiving all
of the compiler specific LZH files you will need
aproximately 2 megabytes of free disk space!
3) Copy the LIBrary that corresponds to the compiler you
are using onto the disk(s) you usually use with your
"C" compiler. The LIB file should be on the same
disk(s) that the "C" runtime libraries are on. Be
sure that the small model library is named "SWIN.LIB".
The large model library should be named "LWIN.LIB".
The Mix Power C library is MWIN.MIX. The EXPRESS C
library is XMWIN.LIB.
4) Copy (or rename) the compiler driver batch file that
corresponds to the compiler you are using to:
CSM.BAT
Page: 26
The Window BOSS
Installation - continued.
5) If WINDOWS.FNS is not contained in the archive for
your compiler, or is not present after you unarchive
the required files, copy (or rename) WINDOWS.FN5 or
WINDOWS.FNZ to WINDOWS.FNS. The following table can be
used:
Compiler File
--------- -----
LC3 & LC6 WINDOWS.FN5
Power C WINDOWS.FN5
WATCOM, EXPRESS C WINDOWS.FN5
MSC5, Quick C WINDOWS.FN5
Turbo C WINDOWS.FN5
CI86 -- None --
AZTEC WINDOWS.FNZ
DLC WINDOWS.FNZ
ZORTECH WINDOWS.FNZ
6) Remember there is no magic to using The Window BOSS.
It's simple!!
Page: 27
The Window BOSS
Installation/Compiling/Linking - continued.
6.2. Compiling
Compile your source code in the following manner:
C>csm hello
** ALL compilers should be invoked with the compiler driver
batch file supplied with The Window BOSS. Some compilers
require ".c" to be added to the name of the source file e.g.
"csm hello.c"
6.3. Linking
Simply specify the ?WIN.LIB file that corresponds to the
compiler/memory model you are using. Don't forget to
include your compilers runtime library as well. The
following examples demonstrate basic linking using the small
model library (medium for MIX Power C):
Lattice
link c+hello,hello,,swin+lcm+lc+lapi+lcr <- 3.41
lmb hello,hello,,swin+lcr; <- 6.XX
Computer Innovations
link hello,hello,,swin+c86s2s
Datalight
link c+hello,hello,hello,swin+nl
Microsoft (C & Quick C)
link hello,hello,,swin
Borland
tlink /c c0s hello,hello,hello,swin emu maths cs
Mix Power C
pcl hello;mwin [5k,40k,0]
Aztec
ln hello swin.lib m.lib c.lib
Watcom
wlink file hello library swin,maths,clibs
EXPRESS C
wlink file hello library xmwin,wcexpl
ZORTECH
blink hello,hello,,swin
Page: 28
The Window BOSS
7. General Notes
Genindex, Help, and Popup are support programs and functions for
the BOSSDEMO program. They can, however, serve as valuable aids
to you in the creation of help screens, pulldown menus, and popup
menus. The code is provided to demonstrate how the functions in
The Window BOSS can be used to create online help screens and
popup windows. Please feel free to modify it to suit your needs.
Both the C and assembly functions make very heavy use of
pointers. The code contains numerous checks to ensure that
memory outside of that in use by the program is not corrupted.
If you attempt to do something that would cause memory to be
corrupted an error message will appear and your program will
exit. This message will usually say that a bad handle was passed
to some function. This error is normally caused by a stray
pointer in the application code! Check all your pointer
operations. Doing strcpy's to arrays with insufficient space
will always cause this type of problem.
Generally speaking, the members of the window control block
(refer to windows.h) should not be modified unless you are
familiar with how they are used by the various functions.
Although the routines appear to support the multi page
capabilities of the IBM Color Card, actual support of this
feature has not been implemented. Invoking the functions with
references to video pages other than 0 might produce interesting,
but undesired results.
If you are upgrading from a previous version of The Window BOSS
be sure to re-compile and re-link your application. This will
eliminate the possibility of any "unusual" problems.
The distribution libraries were created on an IBMPC/AT under DOS
3.3 using Lattice 3.41, Lattice 6.02, Microsoft 5.1, Microsoft
QuickC 2.0, Borland Turbo C 2.0, Datalight 3.10, Aztec 4.10c,
Watcom C 7.0, Mix Power C 1.3.0, Zortech 2.0, and Computer
Innovations CI86 2.30A. Marion was used to create the LIB files
for CI86. Microsoft's LIB was used for the Microsoft variants,
Datalight and Zortech. Lattice, Aztec, Watcom and the Mix Power
C libraries were created with the library managers shipped with
the respective compilers. Test hardware: IBMPC/XT/AT, PS/2, with
IBM Monochrome, CGA, EGA, and VGA video adapters. Additionally,
a wide variety of clones (8088, 8086, 80186, 80286, 80386) with
brand name and noname components were also tested.
Page: 29
The Window BOSS
General Notes - continued.
Several global symbols are used by the various functions:
int wn_dmaflg;
int wn_sbit;
wn_dmaflg when TRUE enables direct writes into video ram.
This is the default setting and should work in all cases.
Setting wn_dmaflg to FALSE will disable these direct writes.
When wn_dmaflg is FALSE the BIOS video routines are used.
This results in slower screen updates. However, this method
does have the advantage of being considered "well behaved"
by IBM's Topview, Microsoft's Windows, and DESQ.
wn_sbit controls the window refresh rate on systems with
color cards. When set to SLOW (defined in windows.h) window
displays will appear to be painted on the screen rather than
flash displayed. This is the default value. Setting wn_sbit
to FAST enables flash displays. Artistic use of wn_sbit can
give your application that extra visual touch. Experiment!
The best way to manipulate the method by which windows are
updated is via the wn_dmode() function. Calling
wn_dmode(PAINT) causes the image to be painted while
wn_dmode(FLASH) causes the image to be flash updated. Flash
updating is the preferred method. Please keep in mind that
windows are always flash updated on monochrome systems.
From a performance standpoint, the fastest (flicker & snow free)
screen updates will occur with wn_dmaflg=TRUE and wn_sbit=FAST.
The key words here are flicker and snow free. Scrolling speed
can be increased with, a proportional increase in flicker
(perhaps), by using wn_scroll() function to set the scrolling
method for the window to BIOS. This technique will provide the
fastest screen updates and scrolling on color systems.
Several of the compilers support a compile time command line
parameter that results in structures being byte aligned instead
of word aligned. In all cases, the default (i.e. no command line
parameter) option was used to compile the modules in the various
libraries.
Programs such as Wordstar and Lotus change the video mode when
they run. If your system is equipped with a color monitor and
your windows are appearing in black and white, issue a call to
v_smode to set the video mode to 3. Alternatively, you can use
the "MODE CO80" command at DOS level before you run your
application.
Page: 30
The Window BOSS
General Notes - continued.
7.1. Borland Turbo C
Borland Turbo C pre version 1.5 users who prefer "The Integrated
Environment" over the "Command-Line Version" MUST define the
symbol "BORLAND=1". (Select Options, Compiler, Defines and enter
"BORLAND=1" in the dialogue box without quotes and in upper
case.)
Integrated Environment users MUST create PROJECT files in order
to be able to create EXEcutable programs from within the Integrated
Environment. The PROJECT file must contain the names of all of
the programs that comprise the application along with specific
entries for all 3rd party libraries being used. In the case of
3rd party libraries, the complete path specification for the
library must be provided (e.g. c:\turboc\lib\swin.lib).
7.2. Microsoft C
Microsoft Version 5.XX libraries were generated using the "/Zl"
command line parameter. This should insure compatability with
previous versions of the compiler.
Some large model programs may require a stack greater than 4096
bytes.
7.3. Microsoft QuickC
Microsoft QuickC - All Programming Environment users MUST
create MAKE files in order to be able to create EXEcutable
programs from within the Programming Environment. The MAKE file
must contain the names of all of the programs that comprise the
application along with specific entries for all 3rd party
libraries being used. In the case of 3rd party libraries, the
complete path specification for the library must be provided
(e.g. c:\msc\lib\swin.lib). MAKE files are created by using
the SET PROGRAM LIST pick from the OPTIONS, MAKE, menu list.
Additionally, MSCV4=1 must be defined in "compiler flags"
"defines" dialog box (select OPTIONS, MAKE, COMPILER FLAGS, then
fill in DEFINES with MSCV4=1).
Some large model programs may require a stack greater than 4096
bytes.
Page: 31
The Window BOSS
General Notes - continued.
7.4. MIX Power C
Mix Power C - (1) Merge files must be created and edited with
text editors that do not insert ^Z for end of file. (2) PCO.EXE
should be in the default directory (the same directory that your
C files are in). (3) The linker should always be told the amount
of memory to be assigned to the stack, heap, and far heap. Since
The Window BOSS uses both heap and far memory outside of your
program, it is imperative that PCL be invoked with reasonable
parameters. Typical values are [5k,40k,0] or [5k,40k,100k]. Refer
to the chapter on the Mix Linker in the Power C manual.
7.5. Zortech C
Zortech C - ZORLIB (as distributed with version 2.0 of Zortech C)
can not produce a correctly formatted library of The Window BOSS
functions. Microsoft's library manager LIB was used to create
the libraries distributed with The Window BOSS. Please do not
attempt to recreate or update any of The Window BOSS libraries
with ZORLIB. Zortech has been notified of the problem.
Page: 32
The Window BOSS
General Notes - continued.
7.6. Lattice C
Lattice C - Lattice large model programs sometimes require the
heap to be set to a minimum value. This can be accomplished by
setting _MNEED or specifying the stack and heap size at run time.
A minimum heap size of 32k will usually satisfy most
applications. REMEMBER: This is for the LARGE model only. Refer
to the Lattice reference manuals for further information on
setting the stack and heapsize.
7.7. Aztec C
Aztec C - Use the following command when recompiling BOSSDEMO.C:
csm -Z5000 bossdemo
Some large model programs may require a stack greater than 4096
bytes.
7.8. Watcom C
Watcom C - Some large model programs may require a stack greater
than 4096 bytes.
7.9. Express C
Express C - Some programs may require a stack greater than 4096
bytes.
7.10. Feedback
PLEASE - Pass along your comments. The Window BOSS is your tool.
If you find any logic errors let us know. We are committed to
making The Window BOSS the best price performer available. Call,
write, or if you prefer, you can reach us via CompuServe or
GENIE. Our CompuServe electronic mail ID is [71565,1001], our
GENIE mail address is MONGELLUZZO. Remember, there is no reason
to sit, steam, or complain to those who can not provide any real
form of support. Lastly, if you use The Window BOSS, register
your copy. The Shareware System will only work if you support
it!
Page: 33
The Window BOSS
7.11. Hints on Resolving Common Problems
Unresolved Externals - Most common with the programming
environments of Turbo C and Quick C. Both of these programming
environments require "program lists" or "make files". This type
of error can also be caused by not explicitly specifying a Window
BOSS library on the link command line. All linkers must have
explicit knowledge of what 3rd party libraries are to be linked
with the compiler libraries and your applications object files.
This problem is usually resolved by creating a program list or
make file that includes a explicit reference to one of The Window
BOSS libraries, or explicitly specifying the correct Window BOSS
library as part of the link command line. Refer to your compiler
documentation for further information.
Bad Handle Exits - Both the C and assembly functions make very
heavy use of pointers. The code contains numerous checks to
ensure that memory does not get corrupted or randmomly written
over. This error is normally caused by a stray pointer in the
application code! Check and recheck all your pointer operations.
Doing strcpy's to arrays with insufficient space will always
cause this type of problem.
Oftentimes switching from the small memory model to large memory
model will initially produce these errors in programs that were
working fine in the small model. In nearly every case the
problem was traced to a stray pointer or improper pointer usage.
Fatal Compilation Errors - All command line compilers should be
invoked with the compiler driver batch files provided as part of
The Window BOSS. This insures the compiler specific compile time
parameters are specified correctly. If you elect to use you own
method be sure to include ALL of the command line parameters that
are specified in the provide batch files.
Missing Files - Remember, the documentation covers two media
kits (Shareware, Source) and neither kit contains ALL files. If
you are missing files that are listed for your media kit then
please contact us.
Linking Errors - (A) See "Unresolved Externals" above. (B) Most
linking errors are the result of; (1) forgetting to specify the
library to link, (2) specifying the wrong library, or (3) command
line syntax errors. Double check your compiler documentation for
the proper way to link "other libraries" or "3rd party
libraries".
Other Problems - Double check this manual for proper usage, your
compile documentation, then contact us.
Page: 34
The Window BOSS
8. Making Changes
Incorporating local modifications or enhancements is, in part,
why you acquired the source code to begin with. Incorporating
your modifications or enhancements should be be a relatively
straight forward task provided you follow the basic guidelines
outlined in the subsequent sections of this manual.
If you feel you have developed a significant enhancement that is
both well documented and written please let us know. We have,
from time to time, incorporated customer supplied enhancements to
our products. Contact us for further details.
8.1. General Considerations
First, be sure that you are familiar with the existing
conventions and compiler specific feature test switches. Refer to
the various BATch files for specific examples of compiler
specific defines etc.
Please note that we assume that you have installed your compiler
exactly as suggested in the compiler's manual. This includes
suggested sub-directories, PATH specifiers, and environment
setup. Check and double check the "include" file requirements -
make sure you have the required files and that they have been
edited to correspond to the memory model you are writing code
for. Creating code that compiles under numerous compilers is not
an easy task. If you run into problems review your compilers
documentation and browse through the batch files provided. If
you still have problems - call!
Carefully review the area of code you wish to modify or enhance -
be sure to get a complete understanding of what's currently going
on before you add your own code. With the exception of the ASM
files, compiler and memory model specific feature test switches
are specified on the command line.
Depending upon the compiler being used, several warning errors
will be generated. Warnings created by the unmodified
distribution code can be safely ignored - all others should be
investigated.
A note of caution... PC/MS-DOS Version 2.XX's LINK can complain
if you build a new library that takes advantage of later LINK
enhancements. If this occurs, you can (1) upgrade to DOS 3.1++
or, (2) get a librarian that isn't so smart!! We suggest going
to the later revision of DOS.
Page: 35
The Window BOSS
Making Changes - continued.
8.2. Specific Changes to Consider
Both the Shareware and Source versions of The Window BOSS and
Data Clerk are supplied with the source code to the following
functions:
wn_puts - put string
wn_gfloat - get floating point number (data entry)
wn_frmget - get form (data entry)
wn_iemsg - error message handler (data entry)
wn_ihmsg - help message handler (data entry)
The above source code was provided to serve as the basis upon
which you could develop your own enhancements to the product and
to provide you with those modules which may need to be modified
for your particular application. The latter is true of
wn_frmget, wn_iemsg, and wn_ihmsg. You should consider modifying
these routines if you want to change the way in which data entry
forms are handled when completed (wn_frmget), the way in which
data entry field help messages are displayed (wn_ihmsg), or the
way in which data entry field error messages are displayed
(wn_iemsg).
In the case of wn_frmget, the code to modify is at the tail end
of the file and is clearly labeled. Data entry Help messages are
displayed by wn_ihmsg whenever F1 is depressed. Data entry error
messages are displayed by wn_iemsg whenever validation for a
particular field fails. Refer to the source code files and the
descriptions of these functions in the function synopsis section
of this document.
Page: 36
The Window BOSS
Making Changes - continued.
8.3. Making Changes - An Overview by The Numbers
1) If applicable, edit the assembler level modules as
needed. Be sure to set LPROG and LDATA (if they apply).
ASSEMBLE.
2) If Applicable, edit the "C" level modules. COMPILE.
3) Test your changes by linking the new/modified code
with the existing libraries. For example to link your
modified wn_move.c and v_getch: (Microsoft example)
C> link myapp+wn_move+msvlib,,,swin
If required, refer to your compiler documentation for
explicit instructions on linking.
4) Update the existing Window BOSS libraries with the new
"obj" files. This is done with the librarian provided
with your compiler. Alternatively, you can use the batch
files provided with the source code to recompile the
entire library and rebuild, rather than update, The
Window BOSS libraries.
If required, refer to your compiler documentation for
explicit instructions on how to use their librarians to
update libraries.
Remember, the memory model of the assembly "obj" file must
correspond to the memory model of the C "obj" files and the
memory model of any existing libraries.
8.4. Assembly Language Object Files
The Source Media Kit now includes the object files of the
assembly language functions used by The Window BOSS. This will
free you from having to acquire, or use, an assembler unless you
intend to make changes to those functions written in assembly
language! Now, all you have to do is copy and or rename the
appropriate object file before running the "MAKELIB" batch file!
A object file matrix is provided to assist you in determining
which object file should be used with which compiler and memory
model.
Page: 37
The Window BOSS
Making Changes - continued.
8.5. Assembly Language Object File Matrix
The matrix that follows identifies the relationship between the
object filename, compiler memory model, and the filename used as
part of the "MAKELIB" batch utility provided as part of The
Window BOSS. Use this matrix to determine what file to rename
(or copy) when recreating Window BOSS libraries that DO NOT
include any changes or additions to existing assembly language
functions.
Object File Matrix
Compiler SMALL MEDIUM COMPACT LARGE MAKELIB NAME
Quick C SMSVLIB MMSVLIB CMSVLIB LMSVLIB MSVLIB.OBJ
MSC SMSVLIB MMSVLIB CMSVLIB LMSVLIB MSVLIB.OBJ
Turbo C SMSVLIB MMSVLIB CMSVLIB LMSVLIB MSVLIB.OBJ
Watcom SWCVLIB MWCVLIB CWCVLIB LWCVLIB WCVLIB.OBJ
Express C ------- MWCVLIB ------- ------- WCVLIB.OBJ
Datalight SDLVLIB PDLVLIB DDLVLIB LDLVLIB DLVLIB.OBJ
Lattice 3 SVLIB PVLIB DVLIB LVLIB VLIB.OBJ
Lattice 6 SVLIB PVLIB DVLIB LVLIB VLIB.OBJ
Zortech SMSVLIB MMSVLIB CMSVLIB LMSVLIB MSVLIB.OBJ
CI86 SVLIB ------- ------- LVLIB VLIB.OBJ
MIX ------- PCVLIB ------- ------- PCVLIB.MIX
AZTEC SAZVLIB MAZVLIB CAZVLIB LAZVLIB AZVLIB.O
Example: Rebuild the Large model libaray for Microsoft C 5.1.
You would:
(1) Use MCOMPILE to compile all C functions
C>MCOMPILE
(2) Copy LMSVLIB.OBJ to MSVLIB.OBJ
C>COPY LMSVLIB.OBJ MSVLIB.OBJ
(3) Rebuild the LARGE model library
C>MAKELIB LWIN
Page: 38
The Window BOSS
Making Changes - continued.
8.6. Assembler Code
Selecting the Memory Model:
Computer Innovations and Lattice
1) vlib.asm Edit - Set LATTICE to 1 for Lattice
DOS.MAC determines the memory model.
Set LATTICE to 0 for Computer Innovations.
MODEL.H determines the memory model.
2) model.h CI86 only - Set "SMALL" & "LARGE"
See MODEL.H for discussion.
Microsoft C, QuickC, Borland Turbo C, Watcom C, Zortech
1) msvlib.asm Set LDATA & LPROG to TRUE or FALSE
wcvlib.asm LDATA is TRUE for LARGE DATA
LPROG is TRUE for LARGE CODE
Assemble using:
MASM /MX MSVLIB; <- All but WATCOM
MASM /MX WCVLIB; <- WATCOM ONLY
Datalight
1) dos.mac Edit to reflect memory model.
Additionally, MACROS.ASM must be present.
Assemble using:
MASM /MX dlvlib;
MIX Power C
1) pcvlib.asm Set LDATA to FALSE, LPROG to TRUE
Assemble using:
MASM /ML PCVLIB;
Run the MIX utility on PCVLIB.OBJ
Aztec C
1) azvlib.asm Set LDATA & LPROG to TRUE or FALSE
LDATA is TRUE for LARGE DATA
LPROG is TRUE for LARGE CODE
Assemble using:
AS AZVLIB;
Page: 39
The Window BOSS
Making Changes - continued.
8.7. C Code
Pattern your enhancements after existing code. Both wn_puts.c and
wn_gfloat.c were provided explicity for this purpose. The most
common mistakes are: (1) failing to call wn_activate, (2) failing
to check for error returns, and (3) failing to rebuild the
libraries correctly.
Incorporating custom data entry functions is a straightforward
task if you follow the guidelines below.
. Pattern your data entry routine after wn_gfloat.
. Study the relationship between wn_gfloat and wn_frmget.
. Study the way in which arguments are loaded using the
unions v1 through v8.
. Edit windows.h and expand the table of data entry function
codes to include a new code above 100, for example:
#define GCUSTOM 101
The table of data entry function codes is located towards
the tail end of "windows.h" and begins with:
#define GDONE 0
. Edit wn_frmget.c expanding the large case statement to
include a case for your custom data entry function.
Pattern the code you are adding after the existing code.
. Rebuild the libraries adding your custom function and
replacing wn_frmget with the new version.
Refer to wn_gfloat and wn_frmget....
The general logic is to call the data entry function with
the arguement list corresponding to this occurance of this
type of field. The data entry function tests the value of
"fun". If it is "XEQ" then control immediately passes to the
logic that handles data entry. If fun is "SET" then the
data entry function loads the form control block (indexed by
"fld") with the arguments being passed. This sets the stage
for subsequent calls (in a predetermined order) from
wn_frmget! When called, wn_frmget first displays all the
prompt fields, and then calls the data entry functions in
the order determined by the form control block.
Page: 40
The Window BOSS
9. Function Call Synopsis
The Window BOSS and Data Clerk Function Library
Page: 41
The Window BOSS
9.1. wn_init -- init window system
9.2. wn_exit -- exit window system
9.3. wn_psinit() -- init window system given physical screen size
USAGE
wn_init()
wn_psinit(rows, columns)
int rows, columns
rows = # of rows on physical screen
cols = # of columns on physical screen
wn_exit()
wn_init() or wn_psinit() and wn_exit(), if used, should be the
first and last functions called. Both wn_init() and wn_psinit()
save the video state and application entry screen. wn_init()
or wn_psinit() is typically the very first function called in
the main program. wn_exit() restores the saved video state and
screen image. wn_exit() is typically called just prior to
calling exit().
wn_init() is the general case of wn_psinit(). It assumes a
physical screen size of 25x80 and therefore is the most
portable across video adapters.
wn_psinit() allows those who need to use either the EGA 43x80
or VGA 50x80 line modes a handy way to save the existing 43 or
50 line screen image. Examples:
wn_psinit(43,80); /* saves 43 line EGA screen */
wn_psinit(50,80); /* saves 50 line VGA screen */
RETURNS
TRUE if successful, FALSE if error.
CAUTIONS and ADDITIONAL NOTES
wn_psinit() does not check to see if the parameters passed are
valid for the adapter in use.
wn_psinit() does not change video modes based on the parameters
passed. It is the programmers responsibility to insure that
the video adapter is in the correct mode for the application.
Calling wn_psinit() with parameters greater than can be handled
by the machines video adapter can have interesting but
undesirable results.
Use of wn_psinit() should be restricted to machines equipped
with EGA or VGA adapters only.
Page: 42
The Window BOSS
9.4. wn_dmode -- set window display mode
USAGE
wn_dmode(mode)
int mode
mode = PAINT for painted windows
mode = FLASH for instant windows
wn_dmode sets the windows display mode as per mode, PAINT style
windows appear to be painted (top to bottom) where FLASH style
windows instantly appear.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
CGA, EGA, and VGA only. Updates are made directly to video
memory.
Page: 43
The Window BOSS
9.5. wn_open -- open window
USAGE
wn = (WINDOWPTR)wn_open(page, row, col, width, height, atrib,
batrib)
int page, row, col, width, height, atrib, batrib;
page - 0 ,1000, or 800.
1000 opens a borderless page
800 opens an exploding window
row - row of upper left hand corner of the window
col - column of upper left hand corner of the window
width - INSIDE dimension (max value is 78, 80
if page = 1000)
height- INSIDE dimension (max value is 23, 25
if page = 1000)
atrib - attribute to be used IN the window
batrib- attribute to be used for the border
wn_open is usually the first function called to create and use
a window. wn_open dynamically allocates memory to save the
area defined by row, col, width, and height - saves the image,
opens the window and homes the logical cursor to row 0, col 0
of the window. The window is now ready to be used by the
various window management routines.
Attributes are defined in windows.h.
RETURNS
wn = window handle or NULL if error
CAUTIONS and ADDITIONAL NOTES
Width and height are inside dimensions. If you want a window
with a work area of 10 rows and 5 columns, the width is 7 and
the height is 12.
The flashing cursor will not be displayed unless wn_sync() has
been called with a value of TRUE.
The window "wn" automatically becomes the top window tile upon
return.
TSR programmers note: Exploding windows always use the system
BIOS routines.
Page: 44
The Window BOSS
9.6. wn_title -- title window
USAGE
wn_title(wn,title)
WINDOWPTR wn;
char *title;
wn - window handle
title - string pointer to title
The title is displayed on the top border of the window using
the currently defined border attribute. The cursor is
positioned off the screen after the title is written.
RETURNS
TRUE if all is well, NULL if the title is to large to fit on
the top border or error.
CAUTIONS and ADDITIONAL NOTES
The window "wn" automatically becomes the top window tile upon
return.
9.7. wn_titla -- title window with attribute
USAGE
wn_titla(wn,title,atrib)
WINDOWPTR wn;
char *title;
int atrib;
wn - window handle
title - string pointer to title
atrib - attribute to use for text
The title is displayed on the top border of the window using
the attribute specified by atrib. The cursor is positioned off
the screen after the title is written.
RETURNS
TRUE if all is well, NULL if the title is to large to fit on
the top border or error.
CAUTIONS and ADDITIONAL NOTES
The window "wn" automatically becomes the top window tile upon
return.
Page: 45
The Window BOSS
9.8. wn_close -- close window
USAGE
wn_close(wn)
WINDOWPTR wn;
wn - handle of a previously opened window.
wn_close removes the window specified by wn and restores the
screen area under the window to its previous contents. The
memory allocated by wn_open is returned to the free list. The
cursor is positioned to where it was located prior to the
wn_open call.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
None.
9.9. wn_save -- save screen image
USAGE
wn = (WINDOWPTR)wn_save(page, row, col, width, height)
int page, row, col, width, height;
page - always 0.
row - row of upper left hand corner of the window
col - column of upper left hand corner of the window
width - INSIDE dimension (max value is 78)
height- INSIDE dimension (max value is 23)
wn_save can be used to save areas of the screen for purposes
other than windows.
Memory for the screen image is dynamically allocated.
RETURNS
wn = window handle or NULL if error
CAUTIONS and ADDITIONAL NOTES
The window handle returned by wn_save should only be used with
wn_restore. Use with other routines could produce unpredictable
results.
Page: 46
The Window BOSS
9.10. wn_restore -- restore saved screen image
USAGE
wn_restore(wn)
WINDOWPTR wn;
wn - handle of previously wn_save(ed) window.
Restores the screen image corresponding to the window handle
wn, and allocated memory is returned to the free list.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
This function should only be used with window handles obtained
from wn_save.
9.11. wn_move -- move window
USAGE
wn = (WINDOWPTR)wn_move(wn,row,col)
wn - handle of window to be moved
row - destination row
col - destination column
Moves the window corresponding to wn to a new location. The
cursor is positioned off the screen after the call.
RETURNS
Window handle of the window moved or NULL if error.
CAUTIONS and ADDITIONAL NOTES
The window "wn" automatically becomes the top window tile upon
return.
Page: 47
The Window BOSS
9.12. wn_locate -- locate cursor in window
USAGE
wn_locate(wn, row, col)
WINDOWPTR wn;
int row, col;
wn - window handle
row - row to position to (relative to window origin)
col - column to position to (relative to window origin)
Position the cursor to the row and column specified. Row and
Column values are relative to the origin of the window (0,0
locates the cursor in the upper left hand corner of the window
referenced by wn).
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
Values of row & col are not checked.
The window "wn" automatically becomes the top window tile upon
return.
Page: 48
The Window BOSS
9.13. wn_printf -- window printf
USAGE
wn_printf(wn, cs, args)
WINDOWPTR wn;
char *cs;
?? arg1 ... argn;
wn - window handle
cs - format control string
args - argument list
printf function for windows!
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
Output string length is limited to 254 bytes.
Registered users can (of course) edit the wn_printf function
and set the limit to whatever they wish.
Integer only for Microsoft 3.0 and Aztec. This limitation
be overcome by using sprintf in conjunction with wn_printf.
For example:
char buf[256];
..
..
sprintf(buf,"%d %l %x\n", intval, longval, hexval);
wn_printf(wn, buf);
Full support for all others.
The window "wn" automatically becomes the top window tile upon
return.
Page: 49
The Window BOSS
9.14. wn_puts -- put string (high speed)
9.15. wn_putc -- put character
USAGE
wn_puts(wn, row, col, string)
WINDOWPTR wn;
int row, col;
char *string;
wn_putc(wn, row, col, c)
WINDOWPTR wn;
int row, col;
char c;
wn - window handle
row - row to print the string at
col - column to print the string at
string- the string to print
c - the character to print
Row and Col are relative to the origin of the window.
The cursor is displayed only if wn_synflg has been called with
a value of TRUE.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
wn_puts writes the string directly to the video ram. Tabs, line
feeds, carriage returns and other control characters are not
filtered or processed in any way.
Range checks are not performed to insure the specified string
can be contained in the window.
The window "wn" automatically becomes the top window tile upon
return.
Page: 50
The Window BOSS
9.16. wn_gets -- get string with validation
USAGE
(char *) wn_gets(wn, buf, va, uva)
WINDOWPTR wn;
char *buf;
int va;
char *uva;
wn - window handle
buf - user buffer for string
va - input validation to be used
uva - user validation list [optional]
va specifies the type of input validation to be performed as
data is being entered. Options are:
(1) none no restrictions - accept everything
(2) integer accept: 0 thru 9 + -
(3) floating point accept: 0 thru 9 + - .
(4) alpha only accept: a thru z
(upper & lower case)
(5) upper case only accept: A thru Z
(6) validation list accept: only those characters
(optional) specified via uva string.
ORing va with 0x8000 disables data entry character echo.
The following editing functions are supported:
. backspace & rubout do the logical things
. ^U, ^X, and ^C wipe the field clean
. Return and Esc end the input function
Data entry takes place at the current logical cursor location.
You can, of course, position the cursor to where you wish
prior to calling wn_gets.
Example:
wn_printf(wn,"Enter your name > ");
wn_gets(wn,buf,4,0);
RETURNS
Pointer to buf or NULL if error
CAUTIONS and ADDITIONAL NOTES
The window "wn" automatically becomes the top window tile upon
return. This function is provided for historical purposes,
more complete and flexible functions are included as part of
the Data Clerk.
Page: 51
The Window BOSS
9.17. wn_putsa -- put string and attribute (high speed)
9.18. wn_putca -- put character and attribute
USAGE
wn_putsa(wn, row, col, string, atrib)
WINDOWPTR wn;
int row, col;
char *string;
int atrib;
wn_putca(wn, row, col, c, atrib)
WINDOWPTR wn;
int row, col;
char c;
int atrib;
wn - window handle
row - row to print the string at
col - column to print the string at
string- the string to print
c - the character to print
atrib - attribute to be used with string
Row and Col are relative to the origin of the window.
The cursor is displayed only if wn_synflg has been called with
a value of TRUE.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
wn_puts writes the string directly to the video ram. Tabs, line
feeds, carriage returns and other control characters are not
filtered or processed in any way.
Range checks are not performed to insure the specified string
can be contained in the window.
The window "wn" automatically becomes the top window tile upon
return.
Page: 52
The Window BOSS
9.19. wn_insrow -- insert row in window
USAGE
wn_insrow(wn, row)
WINDOWPTR wn;
int row;
wn - window handle
row - row at which a line is to be inserted
Row is relative to the origin of the window. All lines below
the row specified are scrolled down. The currently defined
window attribute is used to clear the lines inserted.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
The window "wn" automatically becomes the top window tile upon
return.
9.20. wn_delrow -- delete row from window
USAGE
wn_delrow(wn, row)
WINDOWPTR wn;
int row;
wn - window handle
row - row at which a line is to be deleted
Row is relative to the origin of the window. All lines below
the row specified are scrolled up. The currently defined window
attribute is used to clear the lines inserted.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
The window "wn" automatically becomes the top window tile upon
return.
Page: 53
The Window BOSS
9.21. wn_clr -- clear window
USAGE
wn_clr(wn)
WINDOWPTR wn;
wn - window handle
The window corresponding to wn is cleared (mini clear screen).
The currently defined window attribute is used to clear the
interior of the window.
The windows virtual cursor is homed.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
The window "wn" automatically becomes the top window tile upon
return.
9.22. wn_activate -- activate window
USAGE
wn_activate(wn)
WINDOWPTR wn;
wn - window handle
Activate a previously opened window. The window specified by
"wn" becomes the top window tile.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
None.
Page: 54
The Window BOSS
9.23. wn_color -- set window & border attribute
USAGE
wn_color(wn, atrib, batrib)
WINDOWPTR wn;
unsigned int atrib, batrib;
wn - window handle
atrib - attribute to be used for the window
batrib- attribute to be used for the border
wn_color sets the attribute to be used for all subsequent
operations in the window. The attribute byte contains the
background specific data in the upper 4 bits and the foreground
specific data in the lower 4 bits. Color and bit definitions
can be found in windows.h. You can use a statement of the form:
atrib = (bground << 4 | fground);
to set the attribute to the correct format.
Attributes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
Page: 55
The Window BOSS
9.24. wn_wrap -- set/clear line wrap flag
USAGE
wn_wrap(wn, flag)
WINDOWPTR wn;
int flag;
wn - window handle
flag - wrap flag (TRUE or FALSE)
Sets the line wrap flag for window functions. If line wrap is
true, output that exceeds the width of a window is
automatically placed on the next line. When the line wrap flag
is false, output that exceeds the width of the window is lost.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
9.25. wn_sync -- set/clear cursor synchronization flag
USAGE
wn_sync(wn, flag)
WINDOWPTR wn;
int flag;
wn - window handle
flag - synchronization flag (TRUE or FALSE)
When wn_sync is called with a value of TRUE all subsequent text
output to the window will have a flashing (normal) cursor
displayed following the last character output. Calling wn_sync
with a value of false inhibits the cursor from physically
advancing (it is always logically advanced).
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
Page: 56
The Window BOSS
9.26. wn_scroll -- set scrolling method for window
USAGE
wn_scroll(wn,method)
WINDOWPTR wn;
int method;
wn - window handle.
method - BIOS or DMAS
Set the method to be used to scroll the contents of the window
to use either the rom bios (BIOS), or the flicker free DMA
logic. BIOS and DMAS are defined in "windows.h".
The default scrolling mode is DMAS.
The Window BOSS incorporates machine independent logic that
ensures that scrolling on color systems is performed in such a
way as to totally eliminate snow and flicker. This logic,
although bulletproof, can slow scrolling down. Setting the
scrolling method to BIOS provides a machine independent way to
improve the scrolling speed with a (perhaps) proportional
increase in flicker. Keep in mind that recent developments in
CGA and EGA technology have, for the most part, eliminated
scrolling flicker at the hardware level. If your system is
equipped with one of these boards, you may achieve a
noticeable improvement in scrolling speed by using wn_scroll()
to set the scrolling method to BIOS. Additionally, there are
several console device drivers (FANSI and NANSI to mention
two) that "patch" the bios routines to achieve the same
result.
Setting the scrolling method to BIOS when wn_dmaflg=FALSE has
no effect.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
Color systems only.
Page: 57
The Window BOSS
9.27. wn_dma -- set/clear write ram directly flag
USAGE
wn_dma(flag)
int flag;
flag - write to video ram flag (TRUE or FALSE).
The windowing routines assume that your video card supports
direct access to the video ram (normal for monochrome
monitors).
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
9.28. wn_fixcsr -- update window cursor position
USAGE
wn_fixcsr(wn)
WINDOWPTR wn;
wn - window handle
wn_fixcsr is a companion routine to wn_sync. Causes the
physical cursor to be placed at the logical cursor location.
It is typically called after wn_sync has been called to disable
cursor synchronization. wn_fixcsr does not alter the state of
the windows cursor synchronization flag.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
The window "wn" automatically becomes the top window tile upon
return.
Page: 58
The Window BOSS
9.29. wn_boxset -- set box drawing character set
USAGE
wn_boxset(ul, ur, tb, sd, ll, lr);
int ul, ur, tb, sd, ll, lr;
ul - upper left corner character
ur - upper right corner character
tb - top/bottom line character
sd - left/right side character
ll - lower left corner character
lr - lower right corner character
wn_boxset set the characters to be used to frame all future
windows.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
9.30. wn_natrib -- set new attribute in window NOW!
USAGE
wn_natrib(wn,atrib)
WINDOWPTR wn;
int atrib;
wn - window handle
atrib - attribute to set the window specified by wn to.
The attributes of the window are changed immediately.
Attributes are defined in window.h
The border is not altered.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
The window "wn" automatically becomes the top window tile upon
return.
Page: 59
The Window BOSS
9.31. wn_dborder -- draw (replace) border on window
USAGE
wn_dborder(wn, ul, ur, tb, sd, ll, lr);
WINDOWPTR wn;
int ul, ur, tb, sd, ll, lr;
wn - window handle
ul - upper left corner character
ur - upper right corner character
tb - top/bottom line character
sd - left/right side character
ll - lower left corner character
lr - lower right corner character
The currently defined border attribute is used when drawing the
border.
RETURNS
TRUE or NULL if error
CAUTIONS and ADDITIONAL NOTES
The window "wn" automatically becomes the top window tile upon
return.
Page: 60
The Window BOSS
9.32. wn_input -- general purpose window input
USAGE
wn_input(wn, row, col, prmpt, mask, fill, atrib, ubuff,hlpmsg)
(WINDOWPTR) wn - window pointer
int row - row in window where prompt is displayed
int col - col in window where prompt is displayed
char * prmpt - field prompt
char * mask - data entry mask
char fill - fill character
unsigned atrib - attributes to be used
(fground<<4 | background)
char * ubuff - user text buffer of MAXSTR size
char * hlpmsg- user help message - displayed
when HELP is pressed
wn_input is the Data Clerk's kernel. It is called by
virtually all the higher level data entry functions.
RETURNS:
NULL if error, else non zero value (scancode of last
valid exit key).
CAUTIONS and ADDITIONAL NOTES:
prmpt - If a prompt message is not to be provided, wn_input
should be called with NSTR (null string) in the
place of the prompt message text pointer, for
example:
wn_input(wn,row,col,NSTR,mask,fill,atrib,ubuff,hlpmsg)
+--+
#defined in windows.h --^
The prompt is displayed with the current window
attributes at the row and column specified in the
call. Data entry begins immediately after the
prompt.
mask - The mask determines what type of data may be entered
on a character by character basis. The control
characters are as follows:
# - Number (0 thru 9, -, +)
a - Any ascii character
(0x01 thru 0xff excluding 0x08)
x - Same as 'a', but without echo (password)
t - Any printable ascii char (' ' thru '~')
l - lower case character (a thru z)
u - upper case character (A thru Z)
Page: 61
The Window BOSS
wn_input -- continued.
Mask Examples:
Date Mask "##/##/##"
Time Mask "##:##:##"
Integer Mask "#######"
Float Mask "FFFF.FF"
Phone Number "(###) ###-####"
Upper Case Mask "uuuuu" or "UUUUU"
Lower Case Mask "lllll" or "LLLLL"
Ascii Mask "aaaaa" or "AAAAA"
No Echo Ascii "xxxxx" or "XXXXX"
Text Mask "ttttt" or "TTTTT"
fill - The character to be used to fill the field where
mask characters appear. The typical choice for fill
char is '_'.
help - If a HELP message is not to be provided, wn_input
should be called with NSTR (null string) in the
place of the help message text pointer, for example:
wn_input(wn,row,col,NSTR,mask,fill,atrib,ubuff,NSTR)
+--+
#defined in windows.h --^
wn_ihmsg is called to display this message whenever
the HELP (F1)key is depressed while the cursor is in
the field.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Typical size is the
length of the mask + 2 bytes (strlen(mask)+2).
Maximum length is MAXSTR.
On entry the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if
there is a need for prefilled, but editable fields.
In actual practice, wn_input uses this buffer for
both initial character data entry and subsequent
editing.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. "Now is the time ").
ubuff is returned left justified for non numeric
masks. If a completely numeric mask (#) was
specified and the mask does not contain any other
characters, ubuff is returned right justified.
Page: 62
The Window BOSS
wn_input -- continued.
Editing Keys
Pressing the ESCape, RETURN/ENTER, UARROW, or DARROW
key terminates input. Since wn_input can be called
alone or from any of the custom data entry routines
(wn_gint, wn_gfloat) via wn_frmget, wn_input must be
able to exit in a variety of ways. If wn_input has
been called as the result of a call to wn_frmget,
the UARROW and DARROW keys move to the previous and
next fields respectively.
Backspace and the cursor RIGHT ARROW and LEFT ARROW
can be used to position the cursor during entry. The
space bar can also be pressed when entering numeric
fields provided that no "digits", "+", or "-" has
been struck. Naturally, the HOME and END key work in
a predictable fashion as do the INSert and DELete
keys. The HOME key positions the cursor at the start
of the field, END to end of the field. The INSert
key inserts a space at the current cursor position
(pushing the contents of the field to the right.
DELete deletes the character at the cursor location
(dragging the contents of the field to the left).
When the field fills and RETURN/ENTER has not been
struck, the cursor waits at the end of the field for
RETURN/ENTER to be pressed. You may also press
Backspace, HOME, or LEFT ARROW - these allows the
field to be edited again.
The cursor shape indicates whether or not data can
be entered, or if you are beyond the fields edge.
The cursor is half size (bottom half) when data can
be entered, and half size (top half) when you are
beyond the edge of the field.
BELLs automatically ring when you strike an invalid
key or attempt to enter data beyond the edge of the
field.
Miscellaneous
Choose your fill character wisely, as you can not
enter that character as data in a field.
The data entry routines are pointer intensive.
Failure to insure that they are called with
arguments of the right type, size, and dimension
will certainly cause undesired results.
Page: 63
The Window BOSS
9.33. wn_frmopn -- open data entry form
USAGE
wn_frmopn(nfields)
int nfields - number of fields in form plus 1.
RETURNS:
Pointer to an array of field control blocks. (WIFORM)
or
NULL if error (memory could not be allocated)
CAUTIONS and ADDITIONAL NOTES:
If wn_frmopn returns NULL, no attempt should be made to use
the data entry form in question. NULL indicates that memory
could not be allocated for the form!
This routine must be called before wn_frmget and wn_frmcls.
If your form contains 4 fields the call wn_frmopn as
follows:
WIFORM frm;
frm = wn_frmopn(5);
Fields are sequentially numbered starting from 0 ending at
nfields-2. The extra field is used for internal purposes.
Refer to "sample.c" for example(s) of usage.
Page: 64
The Window BOSS
9.34. wn_frmget -- get (read) data entry form
USAGE
wn_frmget(frm)
WIFORM frm - valid field pointer.
RETURNS:
TRUE - indicating all fields of the form in question have
been fetched and verified (where required).
(-2) - indicating ESCape was pressed and form processing
was terminated.
or
Never Returns!!
CAUTIONS and ADDITIONAL NOTES:
As provided, wn_frmget is very usable, however, you may wish
to modify it (source has been provided for this purpose) to
include some of your own custom forms or the way in which
forms are processed when completed.
As distributed, wn_frmget first displays all field prompts
and then positions to the first field, performs data entry
on a field by field basis from the first to the last
(allowing editing along the way), asks for a confirmation to
accept the fields on the form after the last field is
entered, either accepts the form, or drops into edit mode
for all the fields on the form starting at the first field.
Refer to wn_input for a discussion of editing keys during
data entry.
wn_frmget will not return unless ESCape is pressed or all
data has been entered and verified (where required).
This routine must be called after wn_frmopn, and before
wn_frmcls.
Refer to "sample.c" for example(s) of usage.
Page: 65
The Window BOSS
9.35. wn_frmcls -- close data entry form
USAGE
wn_frmcls(frm)
(WIFORM) frm - pointer to an array of field control blocks
RETURNS:
TRUE
CAUTIONS and ADDITIONAL NOTES:
This routine should only be called if memory is scarce or
there is no further need for the form you wish to close.
Once a form is closed, all traces of it vanish, the only way
to get it back is to start from scratch with wn_frmopn,
wn_frmget and so on.
Closing a form has no impact on its visual image, just its
logical existence. If you wish to make a form vanish both
logically and visually - close the window it is anchored to
after, and only after, closing the form.
In this release, a form is not automatically closed when the
window to which it is anchored is closed.
Refer to "sample.c" for example(s) of usage.
Page: 66
The Window BOSS
9.36. wn_gdate - input date in window
USAGE
wn_gdate(fun,frm,fld,wn,row,col,prmpt,atrib,fill,month,day,year,
ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NULL)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
(int *) month - pointer to int for month (1-12)
(int *) day - pointer to int for day (1-31)
(int *) year - pointer to int for year (0-99)
(char *) ubuff - pointer to char array of 10 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
month, day, and year via pointers.
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minimum size is 10.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
Page: 67
The Window BOSS
wn_gdate continued.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. "12 12 88").
Only basic reasonability checks are made. Therefore, dates
like 02/31/88 can be returned.
Calls wn_input to perform data entry.
Data must satisfy validation checks for function to return.
Refer to "sample.c" for example(s) of usage.
Page: 68
The Window BOSS
9.37. wn_gtime -- input time in window
USAGE
wn_gtime(fun,frm,fld,wn,row,col,prmpt,atrib,fill,hrs,mins,
secs,ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
(int *) hrs - pointer to int for month (0-24)
(int *) mins - pointer to int for day (0-59)
(int *) secs - pointer to int for year (0-59)
(char *) ubuff - pointer to char array of 10 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
hrs, mins, and secs via pointers.
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minimum size is 10.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
Page: 69
The Window BOSS
wn_gtime - continued.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. "23 59 22").
Only basic reasonability checks are made. Therefore, times
like 24:59:59 can be returned.
Calls wn_input to perform data entry.
Data must satisfy validation checks for function to return.
Refer to "sample.c" for example(s) of usage.
Page: 70
The Window BOSS
9.38. wn_gphone -- input phone number in window
USAGE
wn_gphone(fun,frm,fld,wn,row,col,prmpt,atrib,fill,acode,
nnx,num,ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
(int *) acode - pointer to int for area code (3 digits)
(int *) nnx - pointer to int for nnx (3 digits)
(int *) num - pointer to int for number (4 digits)
(char *) ubuff - pointer to char array of 18 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
acode, nnx, and num via pointers.
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minimum size is 18 bytes.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
Page: 71
The Window BOSS
wn_gphone - continued.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. 800 555 1212).
No validation is performed.
Leaving the field blank returns 0 for ACODE, NNX, and NUM.
Calls wn_input to perform data entry.
Refer to "sample.c" for example(s) of usage.
Page: 72
The Window BOSS
9.39. wn_gtext -- input text in window
9.40. wn_gutext -- input uppper case text in window
9.41. wn_gltext -- input lower case text in window
USAGE
wn_gtext(fun,frm,fld,wn,row,col,prmpt,atrib,fill,fwidth,
ubuff,hlpmsg,errmsg)
wn_gutext(..same as wn_gtext)
wn_gltext(..same as wn_gtext)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
int fwidth - width of mask (maximum # of digits is MAXSTR)
(char *) ubuff - pointer to char array of fwidth+2 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
ubuff with text data via pointer.
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minimum size is fwidth+2.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
Page: 73
The Window BOSS
wn_gtext - continued.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. "This is a line of text ").
Case conversion is automatically performed when
wn_gutext() or wn_gltext() are called.
Calls wn_input to perform data entry.
No validation is performed.
Refer to "sample.c" for example(s) of usage.
Page: 74
The Window BOSS
9.42. wn_gpword -- input password in window
USAGE
wn_gpword(fun,frm,fld,wn,row,col,prmpt,atrib,fill,fwidth,
ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
int fwidth - width of mask (maximum # of digits is MAXSTR)
(char *) ubuff - pointer to char array of fwidth+2 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
ubuff with text data via pointer.
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minimum size is fwidth+2.
On entry, the first byte of ubuff should be a null.
Since this fucntion is for PASSWORD entry, editing is
not available. The contents of the edit buffer on
entry is ignored.
Page: 75
The Window BOSS
wn_gpword - continued.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. "This is a line of text ").
Calls wn_input to perform data entry.
No validation is performed.
Page: 76
The Window BOSS
9.43. wn_gint -- input integer in window
USAGE
wn_gint(fun,frm,fld,wn,row,col,prmpt,atrib,fill,value,
fwidth,low,high,ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
(int *) value - pointer to int for return value (low-high)
int fwidth - width of mask
(maximum # of digits is 6 with sign)
int low - minimum value (lower limit of value)
int high - maximum value (upper limit of value)
(char *) ubuff - pointer to char array of 10 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
value via pointer.
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minimum size is 10 bytes.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
Page: 77
The Window BOSS
wn_gint - continued.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces.
Calls wn_input to perform data entry.
Data must satisfy validation checks for function to return.
Calls wn_iemsg(errmsg) when validation fails.
Refer to "sample.c" for example(s) of usage.
Page: 78
The Window BOSS
9.44. wn_guint - input unsigned integer in window
USAGE
wn_guint(fun,frm,fld,wn,row,col,prmpt,atrib,fill,v,
fwidth,low,high,ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR)wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
(unsigned *) v - pointer to int for return value (low-high)
int fwidth - width of mask
(maximum # of digits is 6 with sign)
unsigned low - minimum value (lower limit of value)
unsigned high - maximum value (upper limit of value)
(char *) ubuff - pointer to char array of 10 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
v via pointer.
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minumum size is 10 bytes.
Page: 79
The Window BOSS
wn_guint - continued.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. "-24000").
Calls wn_input to perform data entry.
Data must satisfy validation checks for function to return.
Calls wn_iemsg(errmsg) when validation fails.
Refer to "sample.c" for example(s) of usage.
Page: 80
The Window BOSS
9.45. wn_glong -- input long integer in window
USAGE
wn_glong(fun,frm,fld,wn,row,col,prmpt,atrib,fill,value,
fwidth,low,high,ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
(long*) value - pointer to long for return value (low-high)
int fwidth - width of mask
(maximum # of digits is 10 with sign)
long low - minimum value (lower limit of value)
long high - maximum value (upper limit of value)
(char *) ubuff - pointer to char array of fwidth+2 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
v via pointer.
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minumun size is fwidth+2.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
Page: 81
The Window BOSS
wn_glong - continued.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. "-24000").
Calls wn_input to perform data entry.
Data must satisfy validation checks for function to return.
Calls wn_iemsg(errmsg) when validation fails.
Refer to "sample.c" for example(s) of usage.
Page: 82
The Window BOSS
9.46. wn_gulong -- input unsigned long integer in window
USAGE
wn_gulong(fun,frm,fld,wn,row,col,prmpt,atrib,fill,value,
fwidth,low,high,ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
(unsigned long*) value -
pointer to long for return value (low-high)
int fwidth - width of mask
(maximum # of digits is 10 with sign)
unsigned long low -
minimum value (lower limit of value)
unsigned long high -
maximum value (upper limit of value)
(char *) ubuff - pointer to char array of fwidth+2 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
v via pointer.
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
Page: 83
The Window BOSS
wn_gulong - continued.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minumun size is fwidth+2.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. "-24000").
Calls wn_input to perform data entry.
Data must satisfy validation checks for function to return.
Calls wn_iemsg(errmsg) when validation fails.
Page: 84
The Window BOSS
9.47. wn_gfloat -- input float in window
USAGE
wn_gfloat(fun,frm,fld,wn,row,col,prmpt,atrib,fill,v,
fwidth,ndec,low,high,ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
(float *) v - pointer to float for return value
int fwidth - width of mask
(maximum # of digits is 20 with sign)
int ndec - # of decimal places
float low - minimum value (lower limit of value)
float high - maximum value (upper limit of value)
(char *) ubuff - pointer to char array of fwidth+2 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
v via pointer.
NULL if error, else the non zero value returned from
wn_input.
NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minumum size is fwidth+2.
Page: 85
The Window BOSS
wn_gfloat - continued.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. " -1240.20").
Calls wn_input to perform data entry.
Data must satisfy validation checks for function to return.
Calls wn_iemsg(errmsg) when validation fails.
Refer to "sample.c" for example(s) of usage.
WN_GFLOAT.C is provided in source form.
Page: 86
The Window BOSS
9.48. wn_gdouble -- input double in window
USAGE
wn_gdouble(fun,frm,fld,wn,row,col,prmpt,atrib,fill,v,
fwidth,ndec,low,high,ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
(double *) v - pointer to float for return value
int fwidth - width of mask
(maximum # of digits is 20 with sign)
int ndec - # of decimal places
double low - minimum value (lower limit of value)
double high - maximum value (upper limit of value)
(char *) ubuff - pointer to char array of fwidth+2 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
v via pointer.
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS AND ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minumum size is fwidth+2.
Page: 87
The Window BOSS
wn_gdouble - continued.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. " -1240.20").
Calls wn_input to perform data entry.
Data must satisfy validation checks for function to return.
Calls wn_iemsg(errmsg) when validation fails.
Page: 88
The Window BOSS
9.49. wn_gbool -- input logical in window
USAGE
wn_gbool(fun,frm,fld,wn,row,col,prmpt,atrib,fill,value,
ubuff,hlpmsg,errmsg)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
unsigned atrib - field (not prompt) attributes
char fill - field fill character
(int *) value - pointer to int for value (0=FALSE, 1=TRUE)
(char *) ubuff - pointer to char array of 3 bytes
(char *)hlpmsg - pointer to help message
(call with NSTR for none)
(char *)errmsg - pointer to err message
(call with NSTR for none)
RETURNS:
value via pointer (0=FALSE, 1=TRUE)
NULL if error, else the non zero value returned from
wn_input.
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
ubuff - Editing buffer. Must be of sufficient size to hold
the data as it is entered. Minumum size is 3 bytes.
On entry, the first byte of ubuff should be a null,
otherwise wn_input assumes there is valid data there
and will enter edit mode. This can be handy if there
is a need for prefilled, but editable fields. In
actual practice, wn_input uses this buffer for both
initial character data entry and subsequent editing.
Page: 89
The Window BOSS
wn_gbool - continued.
On return, ubuff contains the actual data entered in
character format with fill and mask characters as
spaces (e.g. "T").
Calls wn_input to perform data entry.
User MUST enter T,F,Y, or N.
Data must satisfy validation checks for function to return.
Calls wn_iemsg(errmsg) when validation fails.
Refer to "sample.c" for example(s) of usage.
Page: 90
The Window BOSS
9.50. wn_dtext -- display text on input form
USAGE
wn_dtext(fun,frm,fld,wn,row,col,prmpt)
int fun - function code (SET || XEQ)
(WIFORM) frm - form pointer (actual || NFRM)
int fld - field # in form (actual || NFLD)
(WINDOWPTR) wn - window pointer
int row - row in window where data input begins
int col - col in window where data input begins
(char *) prmpt - field prompt (call with NSTR for none)
RETURNS:
TRUE if fun==SET
or
Normal return value of wn_puts if fun==XEQ
CAUTIONS and ADDITIONAL NOTES:
fun - fun can only be SET for form setup, or XEQ for
immediate execution. When called with SET, valid
arguments for both "frm" and "fld" must be specified.
frm is the field pointer returned from wn_frmopn(), and
fld is the field sequence number in the form for this
field. When called with XEQ frm must be NFRM and fld
must be NFLD.
Refer to "sample.c" for example(s) of usage.
Page: 91
The Window BOSS
9.51. wn_iemsg -- display input error message
USAGE
wn_iemsg(msg)
(char *) msg - pointer to message to be displayed.
RETURNS:
NULL if error, else TRUE
CAUTIONS and ADDITIONAL NOTES:
This routine should be modified or replaced with code to suit
your application's specific needs. It hooks to wn_g????
such that whenever the field validation fails wn_g???? calls
wn_iemsg to display an error message for the field in
question. The hooks in wn_g????? are of the form:
if(validation failed) wn_iemsg(msg);
This routine displays a single line of text on the 25th line
and waits for a key to be struck before returning to accept
new data for the field in question.
The error message can be a maximum of 80 characters, and must
not contain any formatting directives (\n\t...).
Some wn_g???? functions (i.e. wn_gtext) have no provision to
validate data and therefore never attempt to call this
routine.
WN_IEMSG.C is provided in source form.
Page: 92
The Window BOSS
9.52. wn_ihmsg -- display input help message
USAGE
wn_ihmsg(msg)
(char *) msg - pointer to message to be displayed.
RETURNS:
NULL if error, else TRUE
CAUTIONS and ADDITIONAL NOTES:
This routine should be modified or replaced with code to suit
your application's specific needs. It hooks to wn_input
such that whenever the F1 key is pressed wn_input calls
wn_ihmsg to display a help message for the field in question.
The hooks in wn_input are of the form:
if(key_struck == F1) wn_ihmsg(msg);
This routine displays a single line of help on the 25th line
and waits for a key to be struck before returning.
The help message can be a maximum of 80 characters, and must
not contain any formatting directives (\n\t...).
WN_IHMSG is provided in source form.
Page: 93
The Window BOSS
9.53. wn_sleftj -- (string) left justify
USAGE
wn_sleftj(str)
(char *) str - string to left justify
RETURNS:
Pointer to str.
CAUTIONS and ADDITIONAL NOTES:
The string str is left justified in place.
This funtion should not be used with literal character
strings (e.g. wn_sleft(" left justify this");).
Leading white space is converted to trailing white space.
9.54. wn_srightj -- (string) right justify
USAGE
wn_srightj(str)
(char *) str - string to right justify.
RETURNS:
Pointer to str.
CAUTIONS and ADDITIONAL NOTES:
The string str is right justified in place.
This funtion should not be used with literal character
strings (e.g. wn_srightj("right justify this ");).
Trailing white space is converted to leading white space.
Page: 94
The Window BOSS
9.55. wn_scenter -- (string) center
USAGE
wn_scenter(sr,tr,w)
(char *) sr - the string to center - source
(char *) tr - the centered string - target
tr contains the results of centering
int w - desired width of centered string
RETURNS:
Pointer to tr.
CAUTIONS and ADDITIONAL NOTES:
tr must be a pointer to a character array of at least
w+1 in size.
The source string pointed to by sr is not altered in any
way.
Both leading and trailing white space of the source string
are considered part of the string to be centered.
Desired Width (W)
|------------------------------------------|
source "this is a simple example"
target| this is a simple example |
source " this is an example toooo"
target| this is an example toooo |
This fuction is intended to deal with strings that do not
have leading or trailing white space. WN_SDELSPC can be
called to prepare the string for centering.
Page: 95
The Window BOSS
9.56. wn_sdelspc -- (string) delete leading/trailing spaces
USAGE
wn_sdelspc(str, code)
char *str - string to be treated
int code - operation code:
1 = delete leading
2 = delete trailing
3 = delete both
RETURNS:
Pointer to str.
CAUTIONS and ADDITIONAL NOTES:
All operations are performed in place.
This funtion should not be used with literal character
strings (e.g. wn_sdelspc(" mumble fratz ", 3);).
9.57. wn_strndx -- (string) return index of s2 in s1
USAGE
wn_strndx(s1,s2,off)
(char *) s1 - pointer to string s1
(char *) s2 - pointer to string s2
int off - s1 offset for search start
RETURNS:
The index (aka subscript, aka offset) of where s2 begins in
s1, or (-1) if s2 could not be found in s1.
CAUTIONS and ADDITIONAL NOTES:
A value for "off" must be provided.
Page: 96
The Window BOSS
9.58. mo_reset -- reset/init mouse
USAGE
ms = (MOUSEPTR) mo_reset()
MOUSEPTR ms;
ms - mouse handle
mo_reset() must be the 1st mouse function called.
Low level and applications level interface function.
RETURNS
mo = mouse handle or MOLPTR (null) if error
CAUTIONS and ADDITIONAL NOTES
Any program that uses a mouse must first initialize it in
order to avoid dealing with the mouse in an unknown state.
This function clears the mouse status to a "power on" state,
places the mouse's cursor in the center of the screen
(although hidden) and sets the mouse's active region to the
full screen.
Requires "windows.h" to be "#include"d.
MOUSEPTR is defined in "windows.h"
Example:
#include "windows.h"
main()
{
MOUSEPTR ms;
ms=mo_reset(); /* init mouse */
if(ms) {
..... /* do other things */
exit(0); /* finito */
}
else {
... no mouse
}
}
/* End */
Page: 97
The Window BOSS
9.59. mo_show -- show mouse
USAGE
mo_show(ms)
MOUSEPTR ms;
ms - mouse handle
Display (show, unhide) the mouse cursor.
Low level and applications level interface function.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
Example:
#include "windows.h"
main()
{
MOUSEPTR ms;
ms=mo_reset(); /* init mouse */
if(ms) {
mo_show(ms); /* show mouse */
..... /* do other things */
exit(0); /* finito */
}
else {
... no mouse
}
}
/* End */
Failure to call mo_show() will cause the mouse to never be
displayed. mo_show() is usually called after mo_reset().
Page: 98
The Window BOSS
9.60. mo_hide -- hide mouse
USAGE
mo_hide(ms)
MOUSEPTR ms;
ms - mouse handle
Hide (unshow, make invisible) the mouse cursor.
Low level and applications level interface function.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
The only way to display the mouse cursor after it is hidden
is by calling mo_show().
Example:
#include "windows.h"
main()
{
MOUSEPTR ms;
ms=mo_reset(); /* init mouse */
if(ms) {
mo_show(ms); /* show mouse */
v_getch(); /* wait for key hit */
mo_hide(ms); /* hide mouse */
exit(0); /* finito */
}
else {
... no mouse
}
}
/* End */
Page: 99
The Window BOSS
9.61. mo_pos -- get mouse pixel position & status
USAGE
mo_pos(ms)
MOUSEPTR ms;
ms - mouse handle
This function updates the mouse control block with current
mouse status information - physical location and button
status. This information is provided in real time and in
the mouse's 640 x 200 pixel array corrdinate system.
Low level interface function.
RETURNS
Nothing.
Updates - Members of the mouse control block:
ms->bstat - bit 0 set if left button is CURRENTLY down
bit 1 set if right button is CURRENTLY down
bit 2 set if center button is CURRENTLY down
ms->row - mouse pixel row location
ms->col - mouse pixel col location
CAUTIONS and ADDITIONAL NOTES
All information is reported in real time. If the mouse is
in the process of being moved, the information returned may
not be indicative of the final destination.
This funtion is typically used in graphics mode (which The
Window BOSS does not support). It is handy for "etch-a-
sketch" type pixel drawing programs.
Making infrequent calls to this routine can cause your
program to miss button clicks.
Text (80x25) row and column coordinates can be determined by
dividing m->row and m->col by 8.
The recommended way to obtain accurate information in a more
useful format is by using mo_wait in conjunction with
mo_rcpos.
Also see "mo_rcpos", "mo_wait".
Page: 100
The Window BOSS
9.62. mo_move -- move mouse pixel cursor
USAGE
mo_move(ms, row, col)
MOUSEPTR ms;
int row,col;
ms - mouse handle
row - new pixel row value
col - new pixel col value
This function moves the mouse to a new physical location in
the mouse's 640 x 200 pixel array corrdinate system.
Low level interface function.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
Pixel row and column coordinates can be determined by
multiplying the text (80x25) coordinates by 8.
Also see "mo_locate".
Page: 101
The Window BOSS
9.63. mo_pbinfo -- get pressed mouse botton status
USAGE
mo_pbinfo(ms,button)
MOUSEPTR ms;
int button;
ms - mouse handle
button - button of interest (MO_LEFT or MO_RIGHT)
Low level interface function.
RETURNS
Nothing.
Updates - Members of the mouse control block:
ms->bstat - bit 0 set if left button is CURRENTLY down
bit 1 set if right button is CURRENTLY down
bit 2 set if center button is CURRENTLY down
ms->nclick - number of times the requseted button has
been pressed since last call.
ms->row - mouse pixel row location of last press
ms->col - mouse pixel col location of last press
CAUTIONS and ADDITIONAL NOTES
The mouse device driver is a pretty smart critter. It keeps
track of a number of things, one of them being the number of
times a particular button has been pressed or released since
the last time someone has asked about it. This function
returns pressed button information about a specific button
(MO_LEFT or MO_RIGHT), and it also returns the real time
button status in the same format as mo_pos().
The ms->row and ms->column locations in the mouse control
block are from the last press of the specified button.
This function, like mo_pos, provides limited value for most
applications programs. A better choice is mo_rbinfo
(released button information and status), since the mouse
device driver waits for the user to RELEASE the specified
button before it updates the internal counters.
MO_LEFT and MO_RIGHT are defined in "windows.h"
Calling mo_pbinfo clears the mouse's pressed button history
counters.
Also see "mo_press", "mo_release", "mo_rbinfo"
Page: 102
The Window BOSS
9.64. mo_rbinfo -- get released mouse button status
mo_rbinfo(ms,button)
MOUSEPTR ms;
int button;
ms - mouse handle
button - button of interest (MO_LEFT or MO_RIGHT)
Low level interface function.
RETURNS
Nothing.
Updates - Members of the mouse control block:
ms->bstat - bit 0 set if left has been released
bit 1 set if right button has been released
bit 2 set if center button " " "
ms->nclick - number of times the requseted button has
been pressed and released since last call.
ms->row - mouse pixel row location of last release
ms->col - mouse pixel col location of last release
CAUTIONS and ADDITIONAL NOTES
The mouse device driver is a pretty smart critter. It keeps
track of a number of things, one of them being the number of
times a particular button has been pressed or released since
the last time someone has asked about it. This function
returns released button information about a specific button
(MO_LEFT or MO_RIGHT), and it also returns the real time
button status in the same format as mo_pos().
The ms->row and ms->column locations in the mouse control
block are from the last button release of the specified
button.
The mouse device driver waits for the user to RELEASE the
specified button before it updates the internal counters.
MO_LEFT and MO_RIGHT are defined in "windows.h"
Calling mo_rbinfo clears the mouse's pressed button history
counters.
Also see "mo_release", "mo_press", "mo_pbinfo"
Page: 103
The Window BOSS
9.65. mo_clim -- set mouse min/max pixel column limits
USAGE
mo_clim(ms,min,max)
MOUSEPTR ms;
int min, mix;
ms - mouse handle
min - column minimum in pixels (0 to 639)
max - column maximum in pixels (0 to 639)
mo_clim and mo_rlim limit the operational area of the mouse.
Together they define the mouse's hot area, or if you prefer,
they establish a fence/cage around the mouse.
Low level interface function.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
min and max are not range checked, 0 is on the left.
Also see "mo_reigon"
9.66. mo_rlim -- set mouse min/max pixel row limits
USAGE
mo_clim(ms,min,max)
MOUSEPTR ms;
int min, mix;
ms - mouse handle
min - row minimum in pixels (0 to 199)
max - row maximum in pixels (0 to 199)
mo_clim and mo_rlim limit the operational area of the mouse.
Together they define the mouse's hot area, or if you prefer,
they establish a fence/cage around the mouse.
Low level interface function.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
min and max are not range checked, 0 is at the top.
Page: 104
The Window BOSS
9.67. mo_sgcursor -- set mouse graphics cursor
USAGE
mo_sgcursor(ms, hhot, vhot, seg, off)
MOUSEPTR ms;
int hhot, vhot;
unsigned int seg, off;
ms - mouse handle
hhot, vhot - X & Y relative coordinates of hot spot
seg, off - segment and offset of mask set
Low level interface function.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
This is an unsupported function that is useful in graphics
mode only.
This function is not to be used in conjunction with The
Window BOSS or Data Clerk.
Refer to the Microsoft and/or Logitech API manuals for a
complete description of mouse function 9.
Use "mo_scursor" or "mo_setptr" to set the mouse cursor.
Page: 105
The Window BOSS
9.68. mo_scursor -- set mouse cursor
USAGE
mo_scursor(ms, type, start, stop)
MOUSEPTR ms;
int type, start, stop;
ms - mouse pointer
type - cursor type:
MO_HDW for hardware
MO_SFT for software
start - start scan line
stop - stop scan line
When using a mouse, you can choose between two types of text
cursors, which are hardware or software. The hardware
(MO_HDW) cursor puts the video adapters text cursor under
control of the mouse. This results in a single cursor
appearing on the screen for both the mouse and text. The
software cursor (MO_SFT) allows two cursors to appear on the
screen, the normal text cursor and a mouse cursor that can
take on a user defined shape and attribute. The software
cursor is the default and is a simple full-cell inverse
video cursor.
Using the hardware cursor type MO_HDW:
start - start scan line (usually 0)
stop - stop scan line:
monochrome max = 12
non mon max = 7
Using the software cursor type MO_SFT:
Option 1 (user defined):
start - 0x00
stop - display attributes in upper 8 bits.
ascii character to be used as cursor in lower 8
bits.
For example, to set the software cursor to a white
happy face on a black background:
mo_scursor(ms, MO_SFT, 0x00, 0x0703);
continued...
Page: 106
The Window BOSS
mo_scursor - continued.
Option 2 (see through rectangle):
start - 0x77ff
stop - 0x00
For example, to set the software cursor to a see
through block:
mo_scursor(ms, MO_SOFT, 0x77ff, 7700);
Low level interface function.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
See also "mo_setptr".
Page: 107
The Window BOSS
9.69. mo_motion -- get mouse motion counters
USAGE
mo_motion(ms)
MOUSEPTR ms;
ms - mouse handle
Low level interface function.
RETURNS
Nothing.
Updates - Members of the mouse control block:
ms->vmove - vertical move counter since last call
ms->hmove - horizontal move counter since last call
CAUTIONS and ADDITIONAL NOTES
The mouse motion counters are reset after each call.
Page: 108
The Window BOSS
9.70. mo_task -- define mouse event handler
USAGE
mo_task(m, mask, seg, off)
WINDOWPTR m;
unsigned int mask, seg, off;
m - mouse handle
mask - event mask
BIT EVENT
0 Mouse cursor moved
1 Left Button pressed
2 Left button released
3 Right button pressed
4 Right button released
5 Middle button pressed
6 Middle button released
seg - segment address of handler routine
off - offset portion of handler routine address
This function, if properly implemented, can keep your code
free of frequent mouse checks. The basic notion is to
"attach" a function in your program to the mouse device
driver. This function would be invoked whenever any one of
the above events took place. Your function would then
execute at interrupt level. There are a few shortcomings;
however, your function can not perform any I/O, make any
calls to DOS or call any of the ROM BIOS routines. What can
it do? Actually not much other than record the fact than an
event took place and dismiss the interupt. Your program can
then process the event at its convenience.
The difficulty with using this function is due to the fact
that your function MUST look like an interupt service
routine in both the way it beings executing and finishes
executing. This form of code generation is something most
"C" compilers are not very good at, and as a result most of
these handler routines have to be written in assembly
language. This function is provided as a convenience to
those who are familar with writing these types of programs -
it is not supported by Star Guidance.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
This is an unsupported function.
Refer to the Microsoft and/or Logitech API manuals for a
complete description of mouse function 12.
Page: 109
The Window BOSS
9.71. mo_lpon -- mouse light pen emulation on
9.72. mo_lpoff -- mouse light pen emulation off
USAGE
mo_lpon(ms)
MOUSEPTR ms;
mo_lpoff(ms)
MOUSEPTR ms;
ms - mouse handle
These functions allow software that exepects to find a light
pen to respond (or not to respond) to the mouse as if it
were a light pen. By default, light pen emluation is
enabled - mo_reset() automatically turns on light pen
emulation.
Low level and applications level interface function.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
9.73. mo_ratio -- set motion to pixel ratio
USAGE
mo_ratio(ms)
MOUSEPTR ms;
ms - mouse handle
Set the motion to pixel ratio (graphics mode).
Low level interface function.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
This is an unsupported function.
Refer to the Microsoft and/or Logitech API manuals for a
complete description of mouse function 15.
Page: 110
The Window BOSS
9.74. mo_rcpos -- return current position of mouse
USAGE
mo_rcpos(ms, status, row, col)
MOUSEPTR ms;
int *status, *row, *col;
ms - mouse handle
*status - pointer to int to receive mouse status
bit 0 set if left button is CURRENTLY down
bit 1 set if right button is CURRENTLY down
bit 2 set if center button is CURRENTLY down
*row - pointer to int to receive position
of mouse row (0-25)
*col - pointer to int to receive position
of mouse column (0-79)
Applications level interface function.
RETURNS
Nothing.
Updates - Members of the mouse control block:
ms->bstat - bit 0 set if left button is CURRENTLY down
bit 1 set if right button is CURRENTLY down
bit 2 set if center button is CURRENTLY down
ms->row - mouse pixel row location
ms->col - mouse pixel col location
continued....
Page: 111
The Window BOSS
mo_rcpos - continued.
CAUTIONS and ADDITIONAL NOTES
Example:
#include "windows.h"
main()
{
MOUSEPTR ms;
int st, row, col;
ms=mo_reset(); /* init mouse */
if(ms) {
/* fetch status */
mo_rcpos(ms, &st, &row, &col);
mo_show(ms); /* show mouse */
v_getch(); /* wait for key hit */
mo_hide(ms); /* hide mouse */
exit(0); /* finito */
}
else {
... no mouse
}
}
/* End */
Note the use of pointers.
All information is reported in real time. If the mouse is
in the process of being moved the information returned may
not be indicative of the final destination.
Making infrequent calls to this routine can cause your
program to miss button clicks.
The recommended way to obtain accurate information is by
using mo_wait in conjunction with mo_rcpos.
See also mo_pos(), mo_wait()
Page: 112
The Window BOSS
9.75. mo_locate -- locate (position) mouse cursor
USAGE
mo_locate(ms, row, col)
MOUSEPTR ms;
int row, col;
ms - mouse handle
row - destination row (0-24)
col - destination column (0-79)
mo_locate positions the mouse to the row and column
specified.
Applications level interface function.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
Example:
#include "windows.h"
main()
{
MOUSEPTR ms;
int st, row, col;
ms=mo_reset(); /* init mouse */
if(ms) {
/* fetch status */
mo_rcpos(ms, &st, &row, &col);
if(row != 0) /* home the mouse ?? */
mo_locate(ms, 0, 0);
mo_show(ms); /* show mouse */
v_getch(); /* wait for key hit */
mo_hide(ms); /* hide mouse */
exit(0); /* finito */
}
else {
... no mouse
}
}
/* End */
Values are not range checked.
Page: 113
The Window BOSS
9.76. mo_press -- get mouse button press status
USAGE
mo_press(ms, button, status, nclick, row, col)
MOUSEPTR ms;
int button;
int *status, *nclick, *row, *col;
ms - mouse handle
button - button of interest (MO_LEFT or MO_RIGHT)
status - pointer to int to receive status information.
bit 0 set if left button is CURRENTLY down
bit 1 set if right button is CURRENTLY down
bit 2 set if center button is CURRENTLY down
nclick - pointer to int to receive number of times the
mouse button specified by button has been
pressed since last call. Zero indicates the
button has not been pressed since the last
call.
row - pointer to int to receive row (0-24) of last
button press.
col - pointer to int to receive column (0-79) of
last button press.
Applications level interface function.
RETURNS
Nothing.
Updates - Members of the mouse control block:
ms->bstat - bit 0 set if left button is CURRENTLY down
bit 1 set if right button is CURRENTLY down
bit 2 set if center button is CURRENTLY down
ms->nclick - number of times the requested button has been
pressed since last call.
ms->row - mouse pixel row location of last press
ms->col - mouse pixel col location of last press
continued....
Page: 114
The Window BOSS
mo_press - continued.
CAUTIONS and ADDITIONAL NOTES
Example:
#include "windows.h"
main()
{
MOUSEPTR ms;
int st, row, col;
ms=mo_reset(); /* init mouse */
if(ms) {
/* fetch status */
mo_rcpos(ms, &st, &row, &col);
if(row != 0) /* home the mouse ?? */
mo_locate(ms, 0, 0);
mo_show(ms); /* show mouse */
do { /* loop till press */
mo_wait(ms); /* let mouse settle */
mo_press(ms, MO_LEFT, &st, &nc, &row, &col);
} while(!nc);
mo_hide(ms); /* hide mouse */
exit(0); /* finito */
}
else {
... no mouse
}
}
/* End */
Note use of POINTERS.
MO_LEFT and MO_RIGHT are defined in "windows.h"
Calling mo_press clears the mouse's pressed button history
counters.
Since mo_release waits for the mouse button to be released
before updating the device drivers internal tables, it is a
better choice for most applications.
Also see "mo_pbinfo"
Page: 115
The Window BOSS
9.77. mo_release -- get mouse button release status
USAGE
mo_release(ms, button, status, nclick, row, col)
MOUSEPTR ms;
int button;
int *status, *nclick, *row, *col;
ms - mouse handle
button - button of interest (MO_LEFT or MO_RIGHT)
status - pointer to int to receive status information.
bit 0 set if left button has been pressed
and released.
bit 1 set if right button has been pressed
and released.
bit 2 set if center button has been pressed
and released.
nclick - pointer to int to receive number of times the
mouse button specified by button has been
pressed and released since last call. Zero
indicates the button has not been released
since the last call.
row - pointer to int to receive row (0-24) of last
button release.
col - pointer to int to receive column (0-79) of
last button release.
Applications level interface function.
RETURNS
Nothing.
Updates - Members of the mouse control block:
ms->bstat - bit 0 set if left has been released
bit 1 set if right button has been released
bit 2 set if center button " " "
ms->nclick - number of times the requested button has been
pressed and released since last call.
ms->row - mouse pixel row location of last release
ms->col - mouse pixel col location of last release
continued....
Page: 116
The Window BOSS
mo_release - continued.
CAUTIONS and ADDITIONAL NOTES
Example:
#include "windows.h"
main()
{
MOUSEPTR ms;
int st, nc, row, col;
ms=mo_reset(); /* init mouse */
if(ms) {
/* fetch status */
mo_rcpos(ms, &st, &row, &col);
if(row != 0) /* home the mouse ?? */
mo_locate(ms, 0, 0);
mo_show(ms); /* show mouse */
do { /* loop till release */
mo_wait(ms); /* let mouse settle */
mo_release(ms, MO_LEFT, &st, &nc, &row, &col);
} while(!nc);
mo_hide(ms); /* hide mouse */
exit(0); /* finito */
}
else {
... no mouse
}
}
/* End */
Note use of POINTERS.
The mouse device driver waits for the user to RELEASE the
specified button before it updates the internal counters.
MO_LEFT and MO_RIGHT are defined in "windows.h"
Calling mo_release clears the mouse's pressed button history
counters.
Also see "mo_rbinfo", "mo_pbinfo", "mo_press"
Page: 117
The Window BOSS
9.78. mo_reigon -- set mouse region
USAGE
mo_reigon(ms, row, col, width, height)
MOUSEPTR ms;
int row, col, width, height;
ms - mouse pointer
row - upper left hand corner row
col - upper left hand corner column
width - width of region (# of columns 1 to 80)
height - height of region (# of rows 1 to 25)
mo_reigon defines the boundaries of where the mouse may
move. Establishes a fence/cage around the mouse.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
Example:
#include "windows.h"
main()
{
MOUSEPTR ms;
int st, nc, row, col;
ms=mo_reset(); /* init mouse */
if(ms) {
/* fetch status */
mo_rcpos(ms, &st, &row, &col);
if(row != 0) /* home the mouse ?? */
mo_locate(ms, 0, 0);
mo_reigon(ms, 0, 0, 40, 12); /* 40x12 */
mo_show(ms); /* show mouse */
do { /* loop till release */
mo_wait(ms); /* let mouse settle */
mo_release(ms, MO_LEFT, &st, &nc, &row, &col);
} while(!nc);
mo_hide(ms); /* hide mouse */
exit(0); /* finito */
}
else {
... no mouse
}
}
/* End */
Page: 118
The Window BOSS
9.79. mo_setptr -- set mouse pointer and attributes
USAGE
mo_setptr(ms, tchar, atrib)
MOUSEPTR ms;
unsigned int tchar, atrib;
ms - mouse handle
tchar - character to be used as the mouse cursor, valid
range is 0 to 255 although a value of 0 makes
no sense at all!
atrib - attribute to be used. The attribute byte
contains the background specific data in the
upper 4 bits and the foreground specific data
in the lower 4 bits. Color and bit definitions
can be found in windows.h. You can use a
statement as follows to set atrib:
atrib = (bground << 4 | fground);
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
To set the mouse cursor to a white happy face on a backgound
use the following:
atrib = BLACK<<4 | WHITE;
mo_setptr(ms, 0x03, atrib);
Attributes are defined in windows.h.
Page: 119
The Window BOSS
9.80. mo_wait -- wait for mouse to settle
USAGE
mo_wait(ms)
MOUSEPTR ms;
ms - mouse handle.
Calling mo_wait causes your progam to pause until the mouse
has settled - completely stopped and with its buttons up and
no activity in progress.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
Example:
#include "windows.h"
main()
{
MOUSEPTR ms;
int st, nc, row, col;
unsigned atrib;
ms=mo_reset(); /* init mouse */
if(ms) { /* fetch status */
mo_rcpos(ms, &st, &row, &col);
if(row != 0) /* home the mouse ?? */
mo_locate(ms, 0, 0);
mo_reigon(ms, 0, 0, 40, 12); /* 40x12 */
atrib = BLACK<<4 | WHITE;
mo_setptr(ms, 0x03, atrib);
mo_show(ms); /* show mouse */
do { /* loop till release */
mo_wait(ms); /* let mouse settle */
mo_release(ms, MO_LEFT, &st, &nc, &row, &col);
} while(!nc);
mo_hide(ms); /* hide mouse */
exit(0); /* finito */
}
else {
... no mouse
}
}
/* End */
Page: 120
The Window BOSS
9.81. mo_nbutt -- get mouse button count
USAGE
(int) mo_nbutt(ms)
MOUSEPTR ms;
ms - mouse handle
RETURNS
Number of buttons on mouse.
CAUTIONS and ADDITIONAL NOTES
None.
Page: 121
The Window BOSS
9.82. _getca -- get character and attribute
USAGE
unsigned int _getca(page, row, col)
int page, row, col;
page - video page #
row - row value (0-24)
col - column value (0-79)
_getca fetches the character and attribute at the screen
coordinates defined by row and column. _getca is a general
purpose routine and can be used outside of the window
environment.
RETURNS
The character and attribute as an unsigned int. The attribute
is in the upper byte, the character is in the lower byte.
CAUTIONS and ADDITIONAL NOTES
None.
9.83. _putca -- put character and attribute
USAGE
_putca(page, atch, row, col);
int page, row, col;
unsigned atch;
page - video page #
atch - attribute and character
attribute in high order byte
character in low order byte
row - row position for character (0-24)
col - column position for character (0-79)
_putch is a general purpose routine that can be used outside of
the window environment.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
Page: 122
The Window BOSS
9.84. _vidblt -- video block transfer
USAGE
_vidblt(sseg, soff, dseg, doff, n);
unsigned sseg, soff, dseg, doff;
int n;
sseg - source segment
soff - source offset
dseg - destination segment
doff - destination offset
n - number of bytes to BLT
_vidblt is similar to the lattice movedata() function except
that it waits for the video retrace signal before performing
the block transfer.
_vidblt is a general purpose function that can be used outside
of the window environment.
RETURNS
Nothing
CAUTIONS and ADDITIONAL NOTES
For use in color systems only.
_vidblt references wn_sbit.
9.85. v_spage -- set active display page
USAGE
v_spage(page)
int page;
page - video page to switch the display to
v_spage is a general purpose routine that can be used outside
of the window environment.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
Color card only.
Page: 123
The Window BOSS
9.86. v_cls -- clear entire video screen
USAGE
v_cls(atrib)
int atrib;
atrib - attribute to be used
v_cls clears the entire video screen to the specified attribute
and places the cursor in the upper left hand corner of the
screen.
v_cls is a general purpose routine that can be used outside of
the window environment.
Attributes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
9.87. v_smode -- set video mode
USAGE
v_smode(mode)
int mode;
mode - mode to set the display to
v_smode is a general purpose routine which can be used outside
of the window environment.
Modes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
Page: 124
The Window BOSS
9.88. v_wca -- write character and attribute
USAGE
v_wca(page, char, atrib, count);
int page, char, atrib, count;
page - video page #
char - character to write
atrib - attribute to use
count - number of times to repeat
v_wca writes the character defined by char count times starting
at the current cursor location.
v_wca is a general purpose routine that can be used outside of
the window environment.
Attributes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
9.89. v_wtty -- write character TTY mode
USAGE
v_wtty(char);
int char;
char - character to write
v_wtty writes the character defined by char at the current cursor
location.
v_wtty is a general purpose routine that can be used outside of
the window environment.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
Page: 125
The Window BOSS
9.90. v_locate -- locate (position) cursor
USAGE
v_locate(page, row, col);
int page, row, col;
page - video page #
row - row to position to
col - column to position to
v_locate positions the cursor to the absolute coordinates
specified by row and col on the specified page. The upper left
hand corner of the screen is (0,0).
v_locate is a general purpose routine that can be used outside
of the window environment.
Row and Col are range checked. You CAN position the cursor
slightly (25,80) off the screen.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
9.91. v_hidec -- hide cursor
USAGE
v_hidec();
The physical cursor is located off the screen.
This function does not affect any virtual cursor coordinates,
it simply hides the physical cursor from view.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
Page: 126
The Window BOSS
9.92. v_sctype -- set cursor type (style)
USAGE
v_sctype(type, start, end);
int type, start, end;
type - cursor style code
(0=hidden, 1=normal, 2=slow, 3=fast)
start - start scan line
end - end scan line
As an example, to set a slow flashing block style cursor invoke
this function with type=1, start=6, and end=12 (color card).
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
Color and Monochrome adapters only.
Not for use on the 3270 PC or Enhanced Graphics Adapters.
9.93. v_sapu -- scroll active display page up
USAGE
v_sapu(nl, rul, cul, rlr, clr, atrib);
int nl, rul, cul, rlr, clr, atrib;
nl - number of lines to scroll
rul - row of upper left hand corner of scroll area
cul - column of upper left hand corner of scroll area
rlr - row of lower right corner of scroll area
clr - column of lower right corner of scroll area
atrib - attribute to be used for blanking
A value of 0 for nl scrolls (blanks) the entire area. To clear
the entire video screen use v_sapu(0, 0, 0, 24, 79, NORMAL).
v_sapu is a general purpose routine that can be used outside of
the window environment.
Attributes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
Page: 127
The Window BOSS
9.94. v_sapd -- scroll active display page down
USAGE
v_sapd(nl, rul, cul, rlr, clr, atrib);
int nl, rul, cul, rlr, clr, atrib;
nl - number of lines to scroll
rul - row of upper left hand corner of scroll area
cul - column of upper left hand corner of scroll area
rlr - row of lower right corner of scroll area
clr - column of lower right corner of scroll area
atrib - attribute to be used for blanking
v_sapd is a general purpose routine that can be used outside of
the window environment.
A value of 0 for nl scrolls (blanks) the entire area. To clear
the entire video screen use v_sapd(0, 0, 0, 24, 79, NORMAL).
Attributes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
9.95. v_rcpos -- return current cursor position
USAGE
v_rcpos(page, row, col);
int page;
int *row, *col; /* POINTERS */
int page - video page #
int *row - pointer to int to receive row value
int *col - pointer to int to receive column value
v_rcpos is a general purpose routine that can be used outside
of the window environment.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
Page: 128
The Window BOSS
9.96. v_rcvs -- return current video state
USAGE
v_rcvs(page, vm, cols);
int *page, *vm, *cols; /* POINTERS */
int *page - pointer to int to receive current video page #
int *vm - pointer to int to receive current video mode
int *cols - pointer to int to receive current screen width
v_rcvs is a general purpose routine that can be used outside of
the window environment.
Modes are defined in windows.h.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
9.97. v_getch -- get keyboard character and scan code
USAGE
v_getch();
v_getch is a general purpose routine that can be used outside
of the window environment.
RETURNS
The character and scan code. The character is in the low order
byte, the scan code in the high order byte.
CAUTIONS and ADDITIONAL NOTES
v_getch waits for a key to be struck.
Page: 129
The Window BOSS
9.98. v_kstat -- get keyboard status
USAGE
v_kstat();
v_kstat is a general purpose routine that can be used outside
of the window environment.
RETURNS
TRUE if a character is available, FALSE if not.
CAUTIONS and ADDITIONAL NOTES
None.
9.99. v_kflush -- flush keyboard buffer
USAGE
v_kflush();
v_kflush clears the keyboard buffer of any pending input.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
9.100. v_border -- set border color
USAGE
v_border(color)
int color;
Set overscan border to specified color.
RETURNS
Nothing.
CAUTIONS and ADDITIONAL NOTES
None.
Page: 130
The Window BOSS
10. Registration Form
Registration Form
Star Guidance Consulting
273 Windy Drive
Waterbury, Connecticut 06705
(203) 574-2449
Company Name: _______________________________________
Name: _______________________________________
Address: _______________________________________
_______________________________________
City, State, Zip: _______________________________________
Country: _______________________________________
Phone: _______________________________________
___ Library Source @ $55.00 USD $________._____
___ Shareware @ $20.00 USD $________._____
Shipping (Outside USA) $5.00 USD $________._____
Shipping (USA) $3.50 USD $________._____
Connecticut Sales Tax 8.0% $_______4.40___ *
(Connecticut residents only) *
TOTAL ------>________._____
MasterCard/Visa: ______________________ Exp Date: ____/____
(Circle one)
Printed Name: ______________________
(On Card)
Signature: ______________________ Date:____/____/____
(Of Card Holder)
All funds must be in US Dollars, Call for UPS COD (USA only),
Personal and Company Checks Accepted. All checks must be drawn
against a US Bank and payable in US Dollars.
Page: 131
The Window BOSS
A
ASMFILES.LZH, 18, 19
Aztec C, 33
AZTEC.LZH, 18, 19
azvlib.asm, 39
B
Basics
Forms, 4
Mouse, 8
Windows, 4
Borland Turbo C, 31
BOSS_DOC.LZH, 15, 16
BOSS_LB1.LZH, 15, 17, 26
BOSS_LB2.LZH, 15, 17
BOSS_LB3.LZH, 15, 17
BOSS_LB4.LZH, 15, 17
BOSS_SUP.LZH, 15, 16, 17, 26
Bulletin Board
Files, 15
Support, 15
C
C86.LZH, 18, 19
CFILES.LZH, 18, 20, 21
D
Data Entry (Basics), 6
DEMO.LZH, 18
DLC.LZH, 18, 23
dlvlib.asm, 39
DOC.LZH, 18
dos.mac, 39
E
Express C, 33
F
fields, 12
forms, 12
closing, 12
Forms (Basics), 7
L
Lattice C, 33
LC3.LZH, 18, 22
LC6.LZH, 22
LDATA, 39
LHARC.DOC, 18
LHARC.EXE, 18
LPROG, 39
LWIN.LIB, 26
LZH Files, 15
Page: 132
The Window BOSS
M
macros.asm, 39
Microsoft C, 31
Microsoft Quick C, 31
Mix Power C, 32
MIX.LZH, 18, 22
model.h, 39
Mouse (Basics), 8, 9, 10
mo_clim, 104
mo_hide, 99
mo_locate, 113
mo_lpoff, 110
mo_lpon, 110
mo_motion, 108
mo_move, 101
mo_nbutt, 121
mo_pbinfo, 102
mo_pos, 100
mo_press, 114
mo_ratio, 110
mo_rbinfo, 103
mo_rcpos, 111
mo_reigon, 118
mo_release, 116
mo_reset, 97
mo_rlim, 104
mo_scursor, 106
mo_setptr, 119
mo_sgcursor, 105
mo_show, 98
mo_task, 109
mo_wait, 120
MS5.LZH, 18, 24
MSQC.LZH, 18, 24
msvlib.asm, 39
MWIN.MIX, 26
P
pcvlib.asm, 39
R
return values, 12
REVHST.LZH, 18
S
Shareware Diskette, 15
Source Diskette, 15
Support, 2
Support Services, 2
SWIN.LIB, 26
Page: 133
The Window BOSS
T
TC2.LZH, 18, 23
V
video attributes, 11
vlib.asm, 39
v_border, 130
v_cls, 124
v_getch, 129
v_hidec, 126
v_kflush, 130
v_kstat, 130
v_locate, 126
v_rcpos, 128
v_rcvs, 129
v_sapd, 128
v_sapu, 127
v_sctype, 127
v_smode, 124
v_spage, 123
v_wca, 125
v_wtty, 125
W
Watcom C, 33
WATCOM.LZH, 18, 25
wcvlib.asm, 39
window handles, 11
window origin, 11
windows
closing, 12
overlapping, 13
tiled, 13
Windows (Basics), 5
WINDOWS.FN5, 27
WINDOWS.FNS, 27
WINDOWS.FNZ, 27
wn_activate, 54
wn_boxset, 59
wn_close, 46
wn_clr, 54
wn_color, 55
wn_dborder, 60
wn_delrow, 53
wn_dma, 58
wn_dmode, 43
wn_dtext, 91
wn_exit, 42
wn_fixcsr, 58
wn_frmcls, 66
wn_frmget, 65
wn_frmopn, 64
wn_gbool, 89
wn_gdate, 67
Page: 134
The Window BOSS
wn_gdouble, 87
wn_gets, 51
wn_gfloat, 85
wn_gint, 77
wn_glong, 81
wn_gltext, 73
wn_gphone, 71
wn_gpword, 75
wn_gtext, 73
wn_gtime, 69
wn_guint, 79
wn_gulong, 83
wn_gutext, 73
wn_iemsg, 92
wn_ihmsg, 93
wn_init, 42
wn_psinit, 42
wn_input, 61
wn_insrow, 53
wn_locate, 48
wn_move, 47
wn_natrib, 59
wn_open, 44
wn_printf, 49
wn_psinit, 42
wn_putc, 50
wn_putca, 52
wn_puts, 50
wn_putsa, 52
wn_restore, 47
wn_save, 46
wn_scenter, 95
wn_scroll, 57
wn_sdelspc, 96
wn_sleftj, 94
wn_srightj, 94
wn_strndx, 96
wn_sync, 56
wn_titla, 45
wn_title, 45
wn_wrap, 56
X
XMWIN.LIB, 26
Z
Zortec C, 32
ZTC.LZH, 18, 25
_
_getca, 122
_putca, 122
_vidblt, 123
Page: 135